@getcronit/pylon 3.0.0-canary-20250408151445.565bccf854a248320006893db0ab32ff0fd0beb9 → 3.0.0-canary-20250408153816.a853ef59ecad170f4f07500b4a93bfb2b6299b54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +16 -3
- package/dist/index.js.map +2 -2
- package/dist/pages/index.css +3 -0
- package/dist/pages/index.css.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -878,7 +878,7 @@ function useViewer() {
|
|
|
878
878
|
import { html as html2 } from "hono/html";
|
|
879
879
|
|
|
880
880
|
// package.json
|
|
881
|
-
var version = "3.0.0-canary-
|
|
881
|
+
var version = "3.0.0-canary-20250408153816.a853ef59ecad170f4f07500b4a93bfb2b6299b54";
|
|
882
882
|
|
|
883
883
|
// src/plugins/use-unhandled-route.ts
|
|
884
884
|
function useUnhandledRoute() {
|
|
@@ -1861,9 +1861,22 @@ const loader: __PYLON_ROUTER_INTERNALS_DO_NOT_USE.LoaderFunction = async ({ req
|
|
|
1861
1861
|
if (typeof process !== "undefined") {
|
|
1862
1862
|
headers.set("Authorization", process.env.PYLON_CLIENT_TOKEN || undefined);
|
|
1863
1863
|
}
|
|
1864
|
-
|
|
1864
|
+
|
|
1865
|
+
let browserOrInternalFetch: typeof fetch = fetch
|
|
1866
|
+
|
|
1867
|
+
try {
|
|
1868
|
+
const moduleNameToPreventBundling = '@getcronit/pylon'
|
|
1869
|
+
const {app} = await import(moduleNameToPreventBundling)
|
|
1870
|
+
|
|
1871
|
+
browserOrInternalFetch = app.request
|
|
1872
|
+
} catch (error) {
|
|
1873
|
+
// Pylon is not found. Maybe we are running in a different environment.
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
const uri = url.pathname + url.search
|
|
1877
|
+
|
|
1865
1878
|
try {
|
|
1866
|
-
const response = await
|
|
1879
|
+
const response = await browserOrInternalFetch(uri, {
|
|
1867
1880
|
method: 'GET',
|
|
1868
1881
|
headers: headers,
|
|
1869
1882
|
})
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/define-pylon.ts", "../src/context.ts", "../src/plugins/use-auth/use-auth.ts", "../src/plugins/use-auth/import-private-key.ts", "../src/plugins/use-auth/auth-require.ts", "../src/create-decorator.ts", "../src/app/index.ts", "../src/app/pylon-handler.ts", "../src/plugins/use-sentry.ts", "../src/plugins/use-viewer.ts", "../src/plugins/use-unhandled-route.ts", "../package.json", "../src/get-env.ts", "../src/index.ts", "../src/plugins/use-pages/setup/index.tsx", "../src/components/global-error-page.tsx", "../src/lib/utils.ts", "../src/components/logo.tsx", "../src/plugins/use-pages/setup/serve-file-path.ts", "../src/plugins/use-pages/build/index.ts", "../src/plugins/use-pages/build/app-utils.ts", "../src/plugins/use-pages/build/plugins/inject-app-hydration.ts", "../src/plugins/use-pages/build/plugins/image-plugin.ts", "../src/plugins/use-pages/build/plugins/postcss-plugin.ts", "../src/plugins/use-pages/index.ts"],
|
|
4
|
-
"sourcesContent": ["import * as Sentry from '@sentry/bun'\nimport consola from 'consola'\nimport {\n FragmentDefinitionNode,\n GraphQLError,\n GraphQLErrorExtensions,\n GraphQLObjectType,\n GraphQLResolveInfo,\n SelectionSetNode\n} from 'graphql'\n\nimport {Context, asyncContext} from './context'\nimport {isAsyncIterable, Maybe} from 'graphql-yoga'\n\nexport interface Resolvers {\n Query: Record<string, any>\n Mutation?: Record<string, any>\n Subscription?: Record<string, any>\n}\n\ntype FunctionWrapper = (fn: (...args: any[]) => any) => (...args: any[]) => any\n\nfunction getAllPropertyNames(instance: any): string[] {\n const allProps = new Set<string>()\n\n // Traverse the prototype chain\n let currentObj: any = instance\n\n while (currentObj && currentObj !== Object.prototype) {\n // Get all own property names of the current object\n const ownProps = Object.getOwnPropertyNames(currentObj)\n\n // Add each property to the Set\n ownProps.forEach(prop => allProps.add(prop))\n\n // Move up the prototype chain\n currentObj = Object.getPrototypeOf(currentObj)\n }\n\n // Convert Set to array and filter out the constructor if desired\n return Array.from(allProps).filter(prop => prop !== 'constructor')\n}\n\nasync function wrapFunctionsRecursively(\n obj: any,\n wrapper: FunctionWrapper,\n that: any = null,\n selectionSet: SelectionSetNode['selections'] = [],\n info: GraphQLResolveInfo\n): Promise<any> {\n // Skip if the object is a Date object or any other special object.\n // Those objects are then handled by custom resolvers.\n if (obj === null || obj instanceof Date) {\n return obj\n }\n\n if (Array.isArray(obj)) {\n return await Promise.all(\n obj.map(async item => {\n return await wrapFunctionsRecursively(\n item,\n wrapper,\n that,\n selectionSet,\n info\n )\n })\n )\n } else if (typeof obj === 'function') {\n return Sentry.startSpan(\n {\n name: obj.name,\n op: 'pylon.fn'\n },\n async () => {\n // @ts-ignore\n return await wrapper.call(that, obj, selectionSet, info)\n }\n )\n } else if (obj instanceof Promise) {\n return await wrapFunctionsRecursively(\n await obj,\n wrapper,\n that,\n selectionSet,\n info\n )\n } else if (isAsyncIterable(obj)) {\n return obj\n } else if (typeof obj === 'object') {\n that = obj\n\n const result: Record<string, any> = {}\n\n for (const key of getAllPropertyNames(obj)) {\n result[key] = await wrapFunctionsRecursively(\n obj[key],\n wrapper,\n that,\n selectionSet,\n info\n )\n }\n\n return result\n } else {\n return await obj\n }\n}\nfunction spreadFunctionArguments<T extends (...args: any[]) => any>(fn: T) {\n return (otherArgs: Record<string, any>, c: any, info: GraphQLResolveInfo) => {\n const selections = arguments[1] as SelectionSetNode['selections']\n const realInfo = arguments[2] as GraphQLResolveInfo\n\n let args: Record<string, any> = {}\n\n if (info) {\n const type = info.parentType\n\n const field = type.getFields()[info.fieldName]\n\n const fieldArguments = field?.args\n\n const preparedArguments = fieldArguments?.reduce(\n (acc: {[x: string]: undefined}, arg: {name: string | number}) => {\n if (otherArgs[arg.name] !== undefined) {\n acc[arg.name] = otherArgs[arg.name]\n } else {\n acc[arg.name] = undefined\n }\n\n return acc\n },\n {} as Record<string, any>\n )\n\n if (preparedArguments) {\n args = preparedArguments\n }\n } else {\n args = otherArgs\n }\n\n const orderedArgs = Object.keys(args).map(key => args[key])\n\n const that = this || {}\n\n const result = wrapFunctionsRecursively(\n fn.call(that, ...orderedArgs),\n spreadFunctionArguments,\n this,\n selections,\n realInfo\n )\n\n return result as ReturnType<typeof fn>\n }\n}\n\n/**\n * Converts a set of resolvers into a corresponding set of GraphQL resolvers.\n * @param resolvers The original resolvers.\n * @returns The converted GraphQL resolvers.\n */\nexport const resolversToGraphQLResolvers = (\n resolvers: Resolvers,\n configureContext?: (context: Context) => Context\n): Resolvers => {\n // Define a root resolver function that maps a given resolver function or object to a GraphQL resolver.\n const rootGraphqlResolver =\n (fn: Function | object | Promise<Function> | Promise<object>) =>\n async (\n _: object,\n args: Record<string, any>,\n ctx: Context,\n info: GraphQLResolveInfo\n ) => {\n return Sentry.withScope(async scope => {\n const ctx = asyncContext.getStore()\n\n if (!ctx) {\n consola.warn(\n 'Context is not defined. Make sure AsyncLocalStorage is supported in your environment.'\n )\n }\n\n ctx?.set('graphqlResolveInfo', info)\n\n const auth = ctx?.get('auth')\n\n if (auth?.user) {\n scope.setUser({\n id: auth.user.sub,\n username: auth.user.preferred_username,\n email: auth.user.email,\n details: auth.user\n })\n }\n\n // get query or mutation field\n\n let type: Maybe<GraphQLObjectType> | null = null\n\n switch (info.operation.operation) {\n case 'query':\n type = info.schema.getQueryType()\n break\n case 'mutation':\n type = info.schema.getMutationType()\n break\n case 'subscription':\n type = info.schema.getSubscriptionType()\n break\n default:\n throw new Error('Unknown operation')\n }\n\n const field = type?.getFields()[info.fieldName]\n\n // Get the list of arguments expected by the current query field.\n const fieldArguments = field?.args || []\n\n // Prepare the arguments for the resolver function call by adding any missing arguments with an undefined value.\n const preparedArguments = fieldArguments.reduce(\n (acc: {[x: string]: undefined}, arg: {name: string | number}) => {\n if (args[arg.name] !== undefined) {\n acc[arg.name] = args[arg.name]\n } else {\n acc[arg.name] = undefined\n }\n\n return acc\n },\n {} as Record<string, any>\n )\n\n // Determine the resolver function to call (either the given function or the wrappedWithContext function if it exists).\n let inner = await fn\n\n let baseSelectionSet: SelectionSetNode['selections'] = []\n\n // Find the selection set for the current field.\n for (const selection of info.operation.selectionSet.selections) {\n if (\n selection.kind === 'Field' &&\n selection.name.value === info.fieldName\n ) {\n baseSelectionSet = selection.selectionSet?.selections || []\n }\n }\n\n // Wrap the resolver function with any required middleware.\n const wrappedFn = await wrapFunctionsRecursively(\n inner,\n spreadFunctionArguments,\n this,\n baseSelectionSet,\n info\n )\n\n // Call the resolver function with the prepared arguments.\n if (typeof wrappedFn !== 'function') {\n return wrappedFn\n }\n\n const res = await wrappedFn(preparedArguments)\n\n return res\n })\n }\n\n // Convert the Query and Mutation resolvers to GraphQL resolvers.\n const graphqlResolvers = {} as Resolvers\n\n // Remove empty resolvers\n for (const key of Object.keys(resolvers.Query)) {\n if (!resolvers.Query[key]) {\n delete resolvers.Query[key]\n }\n }\n\n if (resolvers.Query && Object.keys(resolvers.Query).length > 0) {\n for (const [key, value] of Object.entries(resolvers.Query)) {\n if (!graphqlResolvers.Query) {\n graphqlResolvers.Query = {}\n }\n\n graphqlResolvers.Query[key] = rootGraphqlResolver(\n value as Function | object\n )\n }\n }\n\n if (resolvers.Mutation && Object.keys(resolvers.Mutation).length > 0) {\n if (!graphqlResolvers.Mutation) {\n graphqlResolvers.Mutation = {}\n }\n\n for (const [key, value] of Object.entries(resolvers.Mutation)) {\n graphqlResolvers.Mutation[key] = rootGraphqlResolver(\n value as Function | object\n )\n }\n }\n\n if (\n resolvers.Subscription &&\n Object.keys(resolvers.Subscription).length > 0\n ) {\n if (!graphqlResolvers.Subscription) {\n graphqlResolvers.Subscription = {}\n }\n\n for (const [key, value] of Object.entries(resolvers.Subscription)) {\n graphqlResolvers.Subscription[key] = {\n subscribe: rootGraphqlResolver(value as Function | object),\n resolve: (payload: any) => payload\n }\n }\n }\n\n // Query root type must be provided.\n if (!graphqlResolvers.Query) {\n // Custom Error for Query root type must be provided.\n\n throw new Error(`At least one 'Query' resolver must be provided.\n\nExample:\n\nexport const graphql = {\n Query: {\n // Define at least one query resolver here\n hello: () => 'world'\n }\n}\n`)\n }\n\n // Add extra resolvers (e.g. custom scalars) to the GraphQL resolvers.\n for (const key of Object.keys(resolvers)) {\n if (key !== 'Query' && key !== 'Mutation' && key !== 'Subscription') {\n graphqlResolvers[key] = resolvers[key]\n }\n }\n\n return graphqlResolvers\n}\n\nexport class ServiceError extends GraphQLError {\n extensions: GraphQLErrorExtensions\n\n constructor(\n message: string,\n extensions: {\n code: string\n statusCode: number\n details?: Record<string, any>\n },\n error?: Error\n ) {\n super(message, {\n originalError: error\n })\n this.extensions = extensions\n this.cause = error\n }\n}\n", "import {Context as HonoContext} from 'hono'\nimport type {Toucan} from 'toucan-js'\nimport type {AuthState} from './plugins/use-auth'\nimport {AsyncLocalStorage} from 'async_hooks'\nimport {env} from 'hono/adapter'\nimport type {GraphQLResolveInfo} from 'graphql'\n\nexport interface Bindings {\n NODE_ENV: string\n AUTH_PROJECT_ID?: string\n AUTH_KEY?: string\n AUTH_ISSUER?: string\n}\n\nexport interface Variables {\n auth: AuthState\n sentry: Toucan\n graphqlResolveInfo?: GraphQLResolveInfo\n}\n\nexport type Env = {\n Bindings: Bindings\n Variables: Variables\n}\n\nexport type Context = HonoContext<Env, string, {}>\n\nexport const asyncContext = new AsyncLocalStorage<Context>()\n\nexport const getContext = () => {\n const ctx = asyncContext.getStore()\n\n if (!ctx) {\n throw new Error('Context not defined')\n }\n\n ctx.env = env(ctx)\n\n return ctx\n}\n\nexport const setContext = (context: Context) => {\n return asyncContext.enterWith(context)\n}\n", "import {promises as fs} from 'fs'\nimport {deleteCookie, getCookie, setCookie} from 'hono/cookie'\nimport {HTTPException} from 'hono/http-exception'\nimport * as openid from 'openid-client'\nimport path from 'path'\nimport {getContext, type Plugin} from '../../index'\nimport {importPrivateKey} from './import-private-key'\n\ntype AuthKey = {\n type: 'application'\n keyId: string\n key: string\n appId: string\n clientId: string\n}\n\nconst loadAuthKey = async (keyPath: string): Promise<AuthKey> => {\n const authKeyFilePath = path.join(process.cwd(), keyPath)\n\n const env = getContext().env\n\n if (env.AUTH_KEY) {\n try {\n return JSON.parse(env.AUTH_KEY)\n } catch (error) {\n throw new Error(\n 'Error while reading AUTH_KEY. Make sure it is valid JSON'\n )\n }\n }\n\n try {\n const ketFileContent = await fs.readFile(authKeyFilePath, 'utf-8')\n\n try {\n return JSON.parse(ketFileContent)\n } catch (error) {\n throw new Error(\n 'Error while reading key file. Make sure it is valid JSON'\n )\n }\n } catch (error) {\n throw new Error('Error while reading key file. Make sure it exists')\n }\n}\n\nlet openidConfigCache: openid.Configuration | undefined\n\nconst bootstrapAuth = async (issuer: string, keyPath: string) => {\n if (!openidConfigCache) {\n const authKey = await loadAuthKey(keyPath)\n\n openidConfigCache = await openid.discovery(\n new URL(issuer),\n authKey.clientId,\n undefined,\n openid.PrivateKeyJwt({\n key: (await importPrivateKey(authKey.key)) as any,\n kid: authKey.keyId\n })\n )\n }\n\n return openidConfigCache\n}\n\nclass PylonAuthException extends HTTPException {\n // Same constructor as HTTPException\n constructor(...args: ConstructorParameters<typeof HTTPException>) {\n // Prefix the message with \"PylonAuthException: \"\n args[1] = {\n ...args[1],\n message: `PylonAuthException: ${args[1]?.message}`\n }\n\n super(...args)\n }\n}\n\nexport function useAuth(args: {\n issuer: string\n endpoint?: string\n keyPath?: string\n}): Plugin {\n const {issuer, endpoint = '/auth', keyPath = 'key.json'} = args\n\n const loginPath = `${endpoint}/login`\n const logoutPath = `${endpoint}/logout`\n const callbackPath = `${endpoint}/callback`\n\n return {\n middleware: async (ctx, next) => {\n const openidConfig = await bootstrapAuth(issuer, keyPath)\n\n ctx.set('auth', {openidConfig})\n\n // Introspect token\n const authCookieToken = getCookie(ctx, 'pylon-auth')\n const authHeader = ctx.req.header('Authorization')\n const authQueryToken = ctx.req.query('token')\n\n if (authCookieToken || authHeader || authQueryToken) {\n let token: string | undefined\n\n if (authHeader) {\n const [type, value] = authHeader.split(' ')\n if (type === 'Bearer') {\n token = value\n }\n } else if (authQueryToken) {\n token = authQueryToken\n } else if (authCookieToken) {\n token = authCookieToken\n }\n\n if (!token) {\n throw new PylonAuthException(401, {\n message: 'Invalid token'\n })\n }\n\n const introspection = await openid.tokenIntrospection(\n openidConfig,\n token,\n {\n scope: 'openid email profile'\n }\n )\n\n if (!introspection.active) {\n throw new PylonAuthException(401, {\n message: 'Token is not active'\n })\n }\n\n if (!introspection.sub) {\n throw new PylonAuthException(401, {\n message: 'Token is missing subject'\n })\n }\n\n // Fetch user info\n const userInfo = await openid.fetchUserInfo(\n openidConfig,\n token,\n introspection.sub\n )\n\n const roles = Object.keys(\n introspection['urn:zitadel:iam:org:projects:roles']?.valueOf() || {}\n )\n\n ctx.set('auth', {\n user: {\n ...userInfo,\n roles\n },\n openidConfig\n })\n\n return next()\n }\n },\n setup(app) {\n app.get(loginPath, async ctx => {\n const openidConfig = ctx.get('auth').openidConfig\n\n const codeVerifier = openid.randomPKCECodeVerifier() // PKCE code verifier\n const codeChallenge = await openid.calculatePKCECodeChallenge(\n codeVerifier\n )\n\n // Store the code verifier in a secure cookie (not accessible to JavaScript)\n setCookie(ctx, 'pylon_code_verifier', codeVerifier, {\n httpOnly: true,\n maxAge: 300 // 5 minutes\n })\n\n let scope =\n 'openid profile email urn:zitadel:iam:user:resourceowner urn:zitadel:iam:org:projects:roles'\n\n const parameters: Record<string, string> = {\n scope,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n redirect_uri: new URL(ctx.req.url).origin + '/auth/callback',\n state: openid.randomState()\n }\n\n const authorizationUrl = openid.buildAuthorizationUrl(\n openidConfig,\n parameters\n )\n\n return ctx.redirect(authorizationUrl)\n })\n\n app.get(logoutPath, async ctx => {\n // Remove auth cookie\n deleteCookie(ctx, 'pylon-auth')\n\n return ctx.redirect('/')\n })\n\n app.get(callbackPath, async ctx => {\n const openidConfig = ctx.get('auth').openidConfig\n\n const params = ctx.req.query()\n const code = params.code\n const state = params.state\n\n if (!code || !state) {\n throw new PylonAuthException(400, {\n message: 'Missing authorization code or state'\n })\n }\n\n const codeVerifier = getCookie(ctx, 'pylon_code_verifier')\n if (!codeVerifier) {\n throw new PylonAuthException(400, {\n message: 'Missing code verifier'\n })\n }\n\n try {\n const cbUrl = new URL(ctx.req.url)\n // Exchange the authorization code for tokens\n let tokenSet = await openid.authorizationCodeGrant(\n openidConfig,\n cbUrl,\n {\n pkceCodeVerifier: codeVerifier,\n expectedState: state\n },\n cbUrl.searchParams\n )\n\n // Store tokens in secure cookies\n setCookie(ctx, `pylon-auth`, tokenSet.access_token, {\n httpOnly: true,\n maxAge: tokenSet.expires_in || 3600 // Default to 1 hour if not specified\n })\n\n return ctx.redirect('/')\n } catch (error) {\n console.error('Error during token exchange:', error)\n\n return ctx.text('Authentication failed!', 500)\n }\n })\n }\n }\n}\n", "import * as crypto from 'crypto'\n\n/*\nConvert a string into an ArrayBuffer\nfrom https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n*/\nfunction str2ab(str) {\n const buf = new ArrayBuffer(str.length)\n const bufView = new Uint8Array(buf)\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i)\n }\n return buf\n}\n\nconst convertPKCS1ToPKCS8 = (pkcs1: string) => {\n // with cryto module\n\n const key = crypto.createPrivateKey(pkcs1)\n\n return key.export({\n type: 'pkcs8',\n format: 'pem'\n })\n}\n\n/*\nImport a PEM encoded RSA private key, to use for RSA-PSS signing.\nTakes a string containing the PEM encoded key, and returns a Promise\nthat will resolve to a CryptoKey representing the private key.\n*/\nfunction importPKCS8PrivateKey(pem) {\n // fetch the part of the PEM string between header and footer\n const pemHeader = '-----BEGIN PRIVATE KEY-----'\n const pemFooter = '-----END PRIVATE KEY-----'\n const pemContents = pem.substring(\n pemHeader.length,\n pem.length - pemFooter.length - 1\n )\n // base64 decode the string to get the binary data\n const binaryDerString = atob(pemContents)\n // convert from a binary string to an ArrayBuffer\n const binaryDer = str2ab(binaryDerString)\n\n return crypto.subtle.importKey(\n 'pkcs8',\n binaryDer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n true,\n ['sign']\n )\n}\n\nexport const importPrivateKey = async (pkcs1Pem: string) => {\n const pkcs8Pem = convertPKCS1ToPKCS8(pkcs1Pem)\n\n return await importPKCS8PrivateKey(pkcs8Pem)\n}\n", "import {MiddlewareHandler} from 'hono'\nimport {env} from 'hono/adapter'\nimport {HTTPException} from 'hono/http-exception'\nimport {ContentfulStatusCode} from 'hono/utils/http-status'\nimport {ServiceError} from '../../define-pylon'\nimport {Env, getContext} from '../../context'\nimport {createDecorator} from '../../create-decorator'\n\nexport type AuthRequireChecks = {\n roles?: string[]\n}\n\nexport const authMiddleware = (checks: AuthRequireChecks = {}) => {\n const middleware: MiddlewareHandler<Env> = async (ctx, next) => {\n const AUTH_PROJECT_ID = env(ctx).AUTH_PROJECT_ID\n\n // Check if user is authenticated\n const auth = ctx.get('auth')\n\n if (!auth) {\n throw new HTTPException(401, {\n message: 'Authentication required'\n })\n }\n\n if (checks.roles && auth.user) {\n const roles = auth.user.roles\n\n const hasRole = checks.roles.some(role => {\n return (\n roles.includes(role) || roles.includes(`${AUTH_PROJECT_ID}:${role}`)\n )\n })\n\n if (!hasRole) {\n const resError = new Response('Forbidden', {\n status: 403,\n statusText: 'Forbidden',\n headers: {\n 'Missing-Roles': checks.roles.join(','),\n 'Obtained-Roles': roles.join(',')\n }\n })\n\n throw new HTTPException(resError.status as ContentfulStatusCode, {\n res: resError\n })\n }\n }\n\n return next()\n }\n\n return middleware\n}\n\nexport function requireAuth(checks?: AuthRequireChecks) {\n const checkAuth = async (c: any) => {\n const ctx = await c\n\n try {\n await authMiddleware(checks)(ctx, async () => {})\n } catch (e) {\n if (e instanceof HTTPException) {\n if (e.status === 401) {\n throw new ServiceError(e.message, {\n statusCode: 401,\n code: 'AUTH_REQUIRED'\n })\n } else if (e.status === 403) {\n const res = e.getResponse()\n\n throw new ServiceError(res.statusText, {\n statusCode: res.status,\n code: 'AUTHORIZATION_REQUIRED',\n details: {\n missingRoles: res.headers.get('Missing-Roles')?.split(','),\n obtainedRoles: res.headers.get('Obtained-Roles')?.split(',')\n }\n })\n } else {\n throw e\n }\n }\n\n throw e\n }\n }\n\n return createDecorator(async () => {\n const ctx = getContext()\n\n await checkAuth(ctx)\n })\n}\n", "export function createDecorator(callback: (...args: any[]) => Promise<void>) {\n function MyDecorator<T extends (...args: any[]) => any>(\n target: Object,\n propertyKey: string | symbol\n ): void\n\n function MyDecorator<T>(fn: T): T\n\n function MyDecorator<T>(\n arg1: Object | T,\n propertyKey?: string | symbol,\n descriptor?: PropertyDescriptor\n ): any {\n if (descriptor) {\n const originalMethod = descriptor.value as T\n\n descriptor.value = async function (...args: any[]) {\n await callback(...args)\n return (originalMethod as any).apply(this, args)\n }\n\n return descriptor\n } else {\n if (!descriptor) {\n if (propertyKey === undefined) {\n const originalFunction = arg1 as T\n\n return async function (\n ...args: Parameters<any>\n ): Promise<ReturnType<any>> {\n await callback(...args)\n return (originalFunction as any)(...args)\n } as T\n }\n\n let value: any = arg1[propertyKey]\n Object.defineProperty(arg1, propertyKey, {\n get: function () {\n return async function (...args: Parameters<any>) {\n await callback(...args)\n if (typeof value === 'function') {\n return value(...args)\n }\n\n return value\n }\n },\n set: function (newValue) {\n value = newValue\n },\n enumerable: true,\n configurable: true\n })\n\n return\n }\n }\n }\n\n return MyDecorator\n}\n", "import {Hono, MiddlewareHandler} from 'hono'\nimport {logger} from 'hono/logger'\nimport {sentry} from '@hono/sentry'\nimport {except} from 'hono/combine'\n\nimport {asyncContext, Env} from '../context'\n\nexport const app = new Hono<Env>()\n\napp.use('*', sentry())\n\napp.use('*', async (c, next) => {\n return new Promise((resolve, reject) => {\n asyncContext.run(c, async () => {\n try {\n resolve(await next()) // You can pass the value you want to return here\n } catch (error) {\n reject(error) // If an error occurs during the execution of `next()`, reject the Promise\n }\n })\n })\n})\n\napp.use('*', except(['/__pylon/*'], logger()))\n\napp.use((c, next) => {\n // @ts-ignore\n c.req.id = crypto.randomUUID()\n return next()\n})\n\nexport const pluginsMiddleware: MiddlewareHandler[] = []\n\nconst pluginsMiddlewareLoader: MiddlewareHandler = async (c, next) => {\n for (const middleware of pluginsMiddleware) {\n const response = await middleware(c, async () => {})\n\n if (response) {\n return response\n }\n }\n\n return next()\n}\n\napp.use(pluginsMiddlewareLoader)\n", "import {createSchema, createYoga} from 'graphql-yoga'\nimport {GraphQLScalarType, Kind} from 'graphql'\nimport {\n DateTimeISOResolver,\n GraphQLVoid,\n JSONObjectResolver,\n JSONResolver\n} from 'graphql-scalars'\n\nimport {useSentry} from '../plugins/use-sentry'\nimport {Context} from '../context'\nimport {resolversToGraphQLResolvers} from '../define-pylon'\nimport {Plugin, PylonConfig} from '..'\nimport {readFileSync} from 'fs'\nimport path from 'path'\nimport {app, pluginsMiddleware} from '.'\nimport {useViewer} from '../plugins/use-viewer'\nimport {useUnhandledRoute} from '../plugins/use-unhandled-route'\nimport {useDisableIntrospection} from '@graphql-yoga/plugin-disable-introspection'\n\ninterface PylonHandlerOptions {\n graphql: {\n Query: Record<string, any>\n Mutation?: Record<string, any>\n Subscription?: Record<string, any>\n }\n config?: PylonConfig\n}\n\ntype MaybeLazyObject<T> = T | (() => T)\n\nconst resolveLazyObject = <T>(obj: MaybeLazyObject<T>): T => {\n return typeof obj === 'function' ? (obj as () => T)() : obj\n}\n\nconst loadPluginsMiddleware = async (plugins: Plugin[]) => {\n for (const plugin of plugins) {\n await plugin.setup?.(app)\n\n if (plugin.middleware) {\n pluginsMiddleware.push(plugin.middleware)\n }\n }\n}\n\nexport const executeConfig = async (config: PylonConfig) => {\n const plugins = [useSentry(), useViewer(), ...(config?.plugins || [])]\n\n if (config?.landingPage ?? true) {\n plugins.push(useUnhandledRoute())\n }\n\n if (config?.graphiql === false) {\n plugins.push(useDisableIntrospection() as Plugin)\n }\n\n await loadPluginsMiddleware(plugins)\n\n config.plugins = plugins\n\n // @ts-ignore\n app.config = config\n}\n\nexport const handler = (options: PylonHandlerOptions) => {\n let {\n typeDefs,\n resolvers,\n graphql: graphql$\n } = options as PylonHandlerOptions & {\n typeDefs?: string\n resolvers?: Record<string, any>\n }\n\n const graphql = resolveLazyObject(graphql$)\n\n // @ts-ignore\n const config = app.config as PylonConfig\n\n if (!typeDefs) {\n // Try to read the schema from the default location\n const schemaPath = path.join(process.cwd(), '.pylon', 'schema.graphql')\n\n // If `schemaPath` is provided, read the schema from the file\n if (schemaPath) {\n typeDefs = readFileSync(schemaPath, 'utf-8')\n }\n }\n\n if (!typeDefs) {\n throw new Error('No schema provided.')\n }\n\n if (!resolvers) {\n // Try to read the resolvers from the default location\n const resolversPath = path.join(process.cwd(), '.pylon', 'resolvers.js')\n\n // If `resolversPath` is provided, read the resolvers from the file\n\n if (resolversPath) {\n resolvers = require(resolversPath).resolvers\n }\n }\n\n const graphqlResolvers = resolversToGraphQLResolvers(graphql)\n\n const schema = createSchema<Context>({\n typeDefs,\n resolvers: {\n ...graphqlResolvers,\n ...resolvers,\n // Transforms a date object to a timestamp\n Date: DateTimeISOResolver,\n JSON: JSONResolver,\n Object: JSONObjectResolver,\n Void: GraphQLVoid,\n Number: new GraphQLScalarType({\n name: 'Number',\n description: 'Custom scalar that handles both integers and floats',\n\n // Parsing input from query variables\n parseValue(value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Value is not a number: ${value}`)\n }\n return value // Valid number\n },\n\n // Validation when sending from client (input literals)\n parseLiteral(ast) {\n if (ast.kind === Kind.INT || ast.kind === Kind.FLOAT) {\n return parseFloat(ast.value) // Convert the value to a float\n }\n throw new TypeError(\n `Value is not a valid number or float: ${\n 'value' in ast ? ast.value : ast\n }`\n )\n },\n\n // Serialize output to be sent to the client\n serialize(value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Value is not a number: ${value}`)\n }\n return value\n }\n })\n }\n })\n\n const yoga = createYoga({\n graphqlEndpoint: '/graphql',\n ...config,\n landingPage: false,\n graphiql:\n config?.graphiql !== false\n ? req => {\n return {\n shouldPersistHeaders: true,\n title: 'Pylon Playground',\n defaultQuery: `# Welcome to the Pylon Playground!`\n }\n }\n : false,\n schema\n })\n\n const handler = async (c: Context): Promise<Response> => {\n let executionContext: Context['executionCtx'] | {} = {}\n\n try {\n executionContext = c.executionCtx\n } catch (e) {}\n\n const response = await yoga.fetch(c.req.raw, c.env, executionContext)\n\n if (response.status === 404) {\n return c.notFound()\n }\n\n return c.newResponse(response.body, response)\n }\n\n return handler\n}\n", "import {GraphQLError, Kind, OperationDefinitionNode, print} from 'graphql'\nimport {\n getDocumentString,\n handleStreamOrSingleExecutionResult,\n isOriginalGraphQLError,\n OnExecuteDoneHookResultOnNextHook,\n TypedExecutionArgs\n} from '@envelop/core'\nimport * as Sentry from '@sentry/node'\nimport type {Span, TraceparentData} from '@sentry/types'\nimport {Plugin} from '..'\n\nexport type SentryPluginOptions<PluginContext extends Record<string, any>> = {\n /**\n * Starts a new transaction for every GraphQL Operation.\n * When disabled, an already existing Transaction will be used.\n *\n * @default true\n */\n startTransaction?: boolean\n /**\n * Renames Transaction.\n * @default false\n */\n renameTransaction?: boolean\n /**\n * Adds result of each resolver and operation to Span's data (available under \"result\")\n * @default false\n */\n includeRawResult?: boolean\n /**\n * Adds operation's variables to a Scope (only in case of errors)\n * @default false\n */\n includeExecuteVariables?: boolean\n /**\n * The key of the event id in the error's extension. `null` to disable.\n * @default sentryEventId\n */\n eventIdKey?: string | null\n /**\n * Adds custom tags to every Transaction.\n */\n appendTags?: (\n args: TypedExecutionArgs<PluginContext>\n ) => Record<string, unknown>\n /**\n * Callback to set context information onto the scope.\n */\n configureScope?: (\n args: TypedExecutionArgs<PluginContext>,\n scope: Sentry.Scope\n ) => void\n /**\n * Produces a name of Transaction (only when \"renameTransaction\" or \"startTransaction\" are enabled) and description of created Span.\n *\n * @default operation's name or \"Anonymous Operation\" when missing)\n */\n transactionName?: (args: TypedExecutionArgs<PluginContext>) => string\n /**\n * Produces tracing data for Transaction\n *\n * @default is empty\n */\n traceparentData?: (\n args: TypedExecutionArgs<PluginContext>\n ) => TraceparentData | undefined\n /**\n * Produces a \"op\" (operation) of created Span.\n *\n * @default execute\n */\n operationName?: (args: TypedExecutionArgs<PluginContext>) => string\n /**\n * Indicates whether or not to skip the entire Sentry flow for given GraphQL operation.\n * By default, no operations are skipped.\n */\n skip?: (args: TypedExecutionArgs<PluginContext>) => boolean\n /**\n * Indicates whether or not to skip Sentry exception reporting for a given error.\n * By default, this plugin skips all `GraphQLError` errors and does not report it to Sentry.\n */\n skipError?: (args: Error) => boolean\n}\n\nexport const defaultSkipError = isOriginalGraphQLError\n\nexport const useSentry = <PluginContext extends Record<string, any> = {}>(\n options: SentryPluginOptions<PluginContext> = {}\n): Plugin<PluginContext> => {\n function pick<K extends keyof SentryPluginOptions<PluginContext>>(\n key: K,\n defaultValue: NonNullable<SentryPluginOptions<PluginContext>[K]>\n ) {\n return options[key] ?? defaultValue\n }\n\n const startTransaction = pick('startTransaction', true)\n const includeRawResult = pick('includeRawResult', false)\n const includeExecuteVariables = pick('includeExecuteVariables', false)\n const renameTransaction = pick('renameTransaction', false)\n const skipOperation = pick('skip', () => false)\n const skipError = pick('skipError', defaultSkipError)\n\n const eventIdKey = options.eventIdKey === null ? null : 'sentryEventId'\n\n function addEventId(err: GraphQLError, eventId: string | null): GraphQLError {\n if (eventIdKey !== null && eventId !== null) {\n err.extensions[eventIdKey] = eventId\n }\n\n return err\n }\n\n return {\n onExecute({args}) {\n if (skipOperation(args)) {\n return\n }\n\n const rootOperation = args.document.definitions.find(\n o => o.kind === Kind.OPERATION_DEFINITION\n ) as OperationDefinitionNode\n const operationType = rootOperation.operation\n\n const document = getDocumentString(args.document, print)\n\n const opName =\n args.operationName || rootOperation.name?.value || 'Anonymous Operation'\n const addedTags: Record<string, any> =\n (options.appendTags && options.appendTags(args)) || {}\n const traceparentData =\n (options.traceparentData && options.traceparentData(args)) || {}\n\n const transactionName = options.transactionName\n ? options.transactionName(args)\n : opName\n const op = options.operationName ? options.operationName(args) : 'execute'\n const tags = {\n operationName: opName,\n operation: operationType,\n ...addedTags\n }\n\n if (options.configureScope) {\n options.configureScope(args, Sentry.getCurrentScope())\n }\n\n return {\n onExecuteDone(payload) {\n const handleResult: OnExecuteDoneHookResultOnNextHook<{}> = ({\n result,\n setResult\n }) => {\n Sentry.startSpanManual(\n {\n op,\n name: opName,\n attributes: tags\n },\n span => {\n if (renameTransaction) {\n span.updateName(transactionName)\n }\n\n span.setAttribute('document', document)\n\n if (includeRawResult) {\n span.setAttribute('result', JSON.stringify(result))\n }\n\n if (result.errors && result.errors.length > 0) {\n Sentry.withScope(scope => {\n scope.setTransactionName(opName)\n scope.setTag('operation', operationType)\n scope.setTag('operationName', opName)\n scope.setExtra('document', document)\n\n scope.setTags(addedTags || {})\n\n if (includeRawResult) {\n scope.setExtra('result', result)\n }\n\n if (includeExecuteVariables) {\n scope.setExtra('variables', args.variableValues)\n }\n\n const errors = result.errors?.map(err => {\n if (skipError(err) === true) {\n return err\n }\n\n const errorPath = (err.path ?? [])\n .map((v: string | number) =>\n typeof v === 'number' ? '$index' : v\n )\n .join(' > ')\n\n if (errorPath) {\n scope.addBreadcrumb({\n category: 'execution-path',\n message: errorPath,\n level: 'debug'\n })\n }\n\n const eventId = Sentry.captureException(\n err.originalError,\n {\n fingerprint: [\n 'graphql',\n errorPath,\n opName,\n operationType\n ],\n contexts: {\n GraphQL: {\n operationName: opName,\n operationType,\n variables: args.variableValues\n }\n }\n }\n )\n\n return addEventId(err, eventId)\n })\n\n setResult({\n ...result,\n errors\n })\n })\n }\n\n span.end()\n }\n )\n }\n return handleStreamOrSingleExecutionResult(payload, handleResult)\n }\n }\n }\n }\n}\n", "import {html} from 'hono/html'\nimport {type Plugin} from '../index'\n\nexport function useViewer(): Plugin {\n return {\n setup: app => {\n app.get('/viewer', async c => {\n return c.html(\n await html`\n <!DOCTYPE html>\n <html>\n <head>\n <title>Pylon Viewer</title>\n <script src=\"https://cdn.jsdelivr.net/npm/react@16/umd/react.production.min.js\"></script>\n <script src=\"https://cdn.jsdelivr.net/npm/react-dom@16/umd/react-dom.production.min.js\"></script>\n\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.jsdelivr.net/npm/graphql-voyager/dist/voyager.css\"\n />\n <style>\n body {\n padding: 0;\n margin: 0;\n width: 100%;\n height: 100vh;\n overflow: hidden;\n }\n\n #voyager {\n height: 100%;\n position: relative;\n }\n }\n </style>\n <script src=\"https://cdn.jsdelivr.net/npm/graphql-voyager/dist/voyager.min.js\"></script>\n </head>\n <body>\n <div id=\"voyager\">Loading...</div>\n <script>\n function introspectionProvider(introspectionQuery) {\n // ... do a call to server using introspectionQuery provided\n // or just return pre-fetched introspection\n\n // Endpoint is current path instead of root/graphql\n const endpoint = window.location.pathname.replace(\n '/viewer',\n '/graphql'\n )\n\n return fetch(endpoint, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({query: introspectionQuery})\n }).then(response => response.json())\n }\n\n // Render <Voyager />\n GraphQLVoyager.init(document.getElementById('voyager'), {\n introspection: introspectionProvider\n })\n </script>\n </body>\n </html>\n `\n )\n })\n }\n }\n}\n", "import {html} from 'hono/html'\nimport {type Plugin} from '../index'\nimport {version} from '../../package.json'\n\nexport function useUnhandledRoute(): Plugin {\n return {\n setup: app => {\n app.notFound(c => {\n return c.html(\n html`<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\" />\n<title>Welcome to Pylon</title>\n<link\nrel=\"icon\"\nhref=\"https://pylon.cronit.io/favicon/favicon.ico\"\n/>\n<style>\nbody,\nhtml {\npadding: 0;\nmargin: 0;\nheight: 100%;\nfont-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n 'Roboto',\n 'Oxygen',\n 'Ubuntu',\n 'Cantarell',\n 'Fira Sans',\n 'Droid Sans',\n 'Helvetica Neue',\n sans-serif;\ncolor: white;\nbackground-color: black;\n}\n\nmain > section.hero {\ndisplay: flex;\nheight: 90vh;\njustify-content: center;\nalign-items: center;\nflex-direction: column;\n}\n\n.logo {\ndisplay: flex;\nalign-items: center;\n}\n\n.logo-svg {\nwidth: 100%\n}\n\n.buttons {\nmargin-top: 24px;\n}\n\nh1 {\nfont-size: 80px;\n}\n\nh2 {\ncolor: #888;\nmax-width: 50%;\nmargin-top: 0;\ntext-align: center;\n}\n\na {\ncolor: #fff;\ntext-decoration: none;\nmargin-left: 10px;\nmargin-right: 10px;\nfont-weight: bold;\ntransition: color 0.3s ease;\npadding: 4px;\noverflow: visible;\n}\n\na.graphiql:hover {\ncolor: rgba(255, 0, 255, 0.7);\n}\na.docs:hover {\ncolor: rgba(28, 200, 238, 0.7);\n}\na.tutorial:hover {\ncolor: rgba(125, 85, 245, 0.7);\n}\nsvg {\nmargin-right: 24px;\n}\n\n.not-what-your-looking-for {\nmargin-top: 5vh;\n}\n\n.not-what-your-looking-for > * {\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.not-what-your-looking-for > p {\ntext-align: center;\n}\n\n.not-what-your-looking-for > h2 {\ncolor: #464646;\n}\n\n.not-what-your-looking-for > p {\nmax-width: 600px;\nline-height: 1.3em;\n}\n\n.not-what-your-looking-for > pre {\nmax-width: 300px;\n}\n</style>\n</head>\n<body id=\"body\">\n<main>\n<section class=\"hero\">\n<div class=\"logo\">\n <div>\n <svg class=\"logo-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" zoomAndPan=\"magnify\" viewBox=\"0 0 286.5 121.500001\" preserveAspectRatio=\"xMidYMid meet\" version=\"1.0\"><defs><g></g><clipPath id=\"38f6fcde47\"><path d=\"M 0.339844 42 L 10 42 L 10 79 L 0.339844 79 Z M 0.339844 42 \" clip-rule=\"nonzero\"></path></clipPath><clipPath id=\"af000f7256\"><path d=\"M 64 23.925781 L 72.789062 23.925781 L 72.789062 96.378906 L 64 96.378906 Z M 64 23.925781 \" clip-rule=\"nonzero\"></path></clipPath></defs><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(107.11969, 78.49768)\"><g><path d=\"M 10.078125 -25.046875 C 11.109375 -26.398438 12.507812 -27.535156 14.28125 -28.453125 C 16.0625 -29.378906 18.070312 -29.84375 20.3125 -29.84375 C 22.863281 -29.84375 25.195312 -29.210938 27.3125 -27.953125 C 29.425781 -26.691406 31.085938 -24.921875 32.296875 -22.640625 C 33.503906 -20.367188 34.109375 -17.757812 34.109375 -14.8125 C 34.109375 -11.863281 33.503906 -9.222656 32.296875 -6.890625 C 31.085938 -4.566406 29.425781 -2.753906 27.3125 -1.453125 C 25.195312 -0.160156 22.863281 0.484375 20.3125 0.484375 C 18.070312 0.484375 16.078125 0.03125 14.328125 -0.875 C 12.585938 -1.78125 11.171875 -2.910156 10.078125 -4.265625 L 10.078125 13.96875 L 4 13.96875 L 4 -29.359375 L 10.078125 -29.359375 Z M 27.921875 -14.8125 C 27.921875 -16.84375 27.503906 -18.59375 26.671875 -20.0625 C 25.835938 -21.539062 24.734375 -22.660156 23.359375 -23.421875 C 21.992188 -24.179688 20.53125 -24.5625 18.96875 -24.5625 C 17.445312 -24.5625 16 -24.171875 14.625 -23.390625 C 13.257812 -22.609375 12.160156 -21.472656 11.328125 -19.984375 C 10.492188 -18.492188 10.078125 -16.734375 10.078125 -14.703125 C 10.078125 -12.679688 10.492188 -10.914062 11.328125 -9.40625 C 12.160156 -7.894531 13.257812 -6.75 14.625 -5.96875 C 16 -5.1875 17.445312 -4.796875 18.96875 -4.796875 C 20.53125 -4.796875 21.992188 -5.191406 23.359375 -5.984375 C 24.734375 -6.785156 25.835938 -7.953125 26.671875 -9.484375 C 27.503906 -11.015625 27.921875 -12.789062 27.921875 -14.8125 Z M 27.921875 -14.8125 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(143.259256, 78.49768)\"><g><path d=\"M 30.4375 -29.359375 L 12.421875 13.796875 L 6.125 13.796875 L 12.09375 -0.484375 L 0.53125 -29.359375 L 7.296875 -29.359375 L 15.5625 -6.984375 L 24.140625 -29.359375 Z M 30.4375 -29.359375 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(174.281707, 78.49768)\"><g><path d=\"M 10.078125 -39.4375 L 10.078125 0 L 4 0 L 4 -39.4375 Z M 10.078125 -39.4375 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(188.353752, 78.49768)\"><g><path d=\"M 16.734375 0.484375 C 13.960938 0.484375 11.457031 -0.144531 9.21875 -1.40625 C 6.976562 -2.664062 5.21875 -4.441406 3.9375 -6.734375 C 2.664062 -9.035156 2.03125 -11.691406 2.03125 -14.703125 C 2.03125 -17.691406 2.6875 -20.335938 4 -22.640625 C 5.3125 -24.953125 7.101562 -26.726562 9.375 -27.96875 C 11.65625 -29.21875 14.195312 -29.84375 17 -29.84375 C 19.8125 -29.84375 22.351562 -29.21875 24.625 -27.96875 C 26.894531 -26.726562 28.6875 -24.953125 30 -22.640625 C 31.320312 -20.335938 31.984375 -17.691406 31.984375 -14.703125 C 31.984375 -11.722656 31.304688 -9.078125 29.953125 -6.765625 C 28.597656 -4.453125 26.757812 -2.664062 24.4375 -1.40625 C 22.113281 -0.144531 19.546875 0.484375 16.734375 0.484375 Z M 16.734375 -4.796875 C 18.296875 -4.796875 19.757812 -5.164062 21.125 -5.90625 C 22.5 -6.65625 23.613281 -7.773438 24.46875 -9.265625 C 25.320312 -10.765625 25.75 -12.578125 25.75 -14.703125 C 25.75 -16.835938 25.335938 -18.640625 24.515625 -20.109375 C 23.703125 -21.585938 22.617188 -22.695312 21.265625 -23.4375 C 19.910156 -24.1875 18.453125 -24.5625 16.890625 -24.5625 C 15.328125 -24.5625 13.878906 -24.1875 12.546875 -23.4375 C 11.210938 -22.695312 10.15625 -21.585938 9.375 -20.109375 C 8.59375 -18.640625 8.203125 -16.835938 8.203125 -14.703125 C 8.203125 -11.546875 9.007812 -9.101562 10.625 -7.375 C 12.25 -5.65625 14.285156 -4.796875 16.734375 -4.796875 Z M 16.734375 -4.796875 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(222.361196, 78.49768)\"><g><path d=\"M 18.8125 -29.84375 C 21.125 -29.84375 23.191406 -29.363281 25.015625 -28.40625 C 26.847656 -27.445312 28.28125 -26.023438 29.3125 -24.140625 C 30.34375 -22.253906 30.859375 -19.984375 30.859375 -17.328125 L 30.859375 0 L 24.84375 0 L 24.84375 -16.421875 C 24.84375 -19.046875 24.179688 -21.054688 22.859375 -22.453125 C 21.546875 -23.859375 19.753906 -24.5625 17.484375 -24.5625 C 15.210938 -24.5625 13.410156 -23.859375 12.078125 -22.453125 C 10.742188 -21.054688 10.078125 -19.046875 10.078125 -16.421875 L 10.078125 0 L 4 0 L 4 -29.359375 L 10.078125 -29.359375 L 10.078125 -26.015625 C 11.066406 -27.222656 12.332031 -28.160156 13.875 -28.828125 C 15.425781 -29.503906 17.070312 -29.84375 18.8125 -29.84375 Z M 18.8125 -29.84375 \"></path></g></g></g><path fill=\"currentColor\" d=\"M 53.359375 31.652344 L 53.359375 88.6875 L 62.410156 90.859375 L 62.410156 29.484375 Z M 53.359375 31.652344 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><g clip-path=\"url(#38f6fcde47)\"><path fill=\"currentColor\" d=\"M 0.339844 47.433594 L 0.339844 72.910156 C 0.339844 73.34375 0.410156 73.769531 0.554688 74.179688 C 0.699219 74.59375 0.90625 74.96875 1.175781 75.3125 C 1.445312 75.65625 1.765625 75.945312 2.132812 76.179688 C 2.503906 76.414062 2.898438 76.582031 3.324219 76.683594 L 9.390625 78.140625 L 9.390625 42.195312 L 3.3125 43.660156 C 2.890625 43.761719 2.492188 43.929688 2.125 44.164062 C 1.761719 44.402344 1.441406 44.6875 1.171875 45.03125 C 0.902344 45.375 0.695312 45.75 0.554688 46.164062 C 0.410156 46.574219 0.339844 46.996094 0.339844 47.433594 Z M 0.339844 47.433594 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></g><g clip-path=\"url(#af000f7256)\"><path fill=\"currentColor\" d=\"M 64.996094 95.085938 L 64.996094 25.253906 C 64.996094 25.082031 65.027344 24.917969 65.09375 24.761719 C 65.160156 24.601562 65.253906 24.460938 65.375 24.339844 C 65.496094 24.21875 65.636719 24.125 65.792969 24.0625 C 65.953125 23.996094 66.117188 23.960938 66.289062 23.960938 L 71.460938 23.960938 C 71.632812 23.960938 71.796875 23.996094 71.957031 24.0625 C 72.113281 24.125 72.253906 24.21875 72.375 24.339844 C 72.496094 24.460938 72.589844 24.601562 72.65625 24.761719 C 72.722656 24.917969 72.753906 25.082031 72.753906 25.253906 L 72.753906 95.085938 C 72.753906 95.257812 72.722656 95.421875 72.65625 95.582031 C 72.589844 95.738281 72.496094 95.878906 72.375 96 C 72.253906 96.121094 72.113281 96.214844 71.957031 96.28125 C 71.796875 96.347656 71.632812 96.378906 71.460938 96.378906 L 66.289062 96.378906 C 66.117188 96.378906 65.953125 96.347656 65.792969 96.28125 C 65.636719 96.214844 65.496094 96.121094 65.375 96 C 65.253906 95.878906 65.160156 95.738281 65.09375 95.582031 C 65.027344 95.421875 64.996094 95.257812 64.996094 95.085938 Z M 64.996094 95.085938 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></g><path fill=\"currentColor\" d=\"M 22.320312 81.238281 L 22.320312 39.101562 L 11.976562 41.585938 L 11.976562 78.757812 Z M 22.320312 81.238281 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><path fill=\"currentColor\" d=\"M 50.769531 88.066406 L 50.769531 32.277344 L 37.839844 35.378906 L 37.839844 84.960938 Z M 50.769531 88.066406 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><path fill=\"currentColor\" d=\"M 24.90625 81.863281 L 35.253906 84.34375 L 35.253906 35.996094 L 24.90625 38.480469 Z M 24.90625 81.863281 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></svg>\n </div>\n <p>Version: ${version}</p>\n</div>\n<h2>Enables TypeScript developers to easily build GraphQL APIs</h2>\n<div class=\"buttons\">\n <a href=\"https://pylon.cronit.io/docs\" class=\"docs\"\n >Read the Docs</add\n >\n <a href=\"/graphql\" class=\"graphiql\">Visit GraphiQL</a>\n <a href=\"/viewer\" class=\"graphiql\">Visit Viewer</a>\n</div>\n</section>\n<section class=\"not-what-your-looking-for\">\n<h2>Not the page you are looking for? \uD83D\uDC40</h2>\n<p>\n This page is shown be default whenever a 404 is hit.<br />You can disable this by behavior\n via the <code>landingPage</code> option in the Pylon config. Edit the <code>src/index.ts</code> file\n and add the following code:\n</p>\n<pre>\n <code>\nexport const config: PylonConfig = {\n landingPage: false\n}\n </code>\n</pre>\n\n<p>\n When you define a route, this page will no longer be shown. For example, the following code\nwill show a \"Hello, world!\" message at the root of your app:\n</p>\n<pre>\n <code>\nimport {app} from '@getcronit/pylon'\n\napp.get(\"/\", c => {\n return c.text(\"Hello, world!\")\n})\n </code>\n</pre>\n</section>\n</main>\n</body>\n</html>`,\n 404\n )\n })\n }\n }\n}\n", "{\n \"name\": \"@getcronit/pylon\",\n \"version\": \"3.0.0-canary-20250408151445.565bccf854a248320006893db0ab32ff0fd0beb9\",\n \"type\": \"module\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./pages\": {\n \"import\": \"./dist/pages/index.js\",\n \"types\": \"./dist/pages/index.d.ts\"\n },\n \"./pages/index.css\": {\n \"import\": \"./dist/pages/index.css\"\n },\n \"./tsconfig.pylon.json\": \"./tsconfig.pylon.json\"\n },\n \"scripts\": {\n \"build\": \"rimraf ./dist && node build.js && pnpm run build:declarations\",\n \"build:declarations\": \"tsc --declaration --emitDeclarationOnly --outDir ./dist && tsc-alias\"\n },\n \"files\": [\n \"dist\",\n \"tsconfig.pylon.json\"\n ],\n \"author\": \"Nico Schett <nico.schett@cronit.io>\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/getcronit/pylon.git\",\n \"directory\": \"packages/pylon\"\n },\n \"homepage\": \"https://pylon.cronit.io\",\n \"dependencies\": {\n \"@envelop/core\": \"^5.0.3\",\n \"@gqty/react\": \"^3.1.0\",\n \"@graphql-yoga/plugin-disable-introspection\": \"^2.13.0\",\n \"@hono/sentry\": \"^1.2.0\",\n \"@radix-ui/react-collapsible\": \"^1.1.3\",\n \"@radix-ui/react-slot\": \"^1.1.2\",\n \"@sentry/bun\": \"^8.17.0\",\n \"@sentry/node\": \"^8.54.0\",\n \"chokidar\": \"^4.0.3\",\n \"class-variance-authority\": \"^0.7.1\",\n \"clsx\": \"^2.1.1\",\n \"consola\": \"^3.2.3\",\n \"gqty\": \"3.4.0-canary-20250207102900.644ad9fdeafa6318516627577b1d4d754d5c5a98\",\n \"graphql\": \"^16.9.0\",\n \"graphql-scalars\": \"^1.24.0\",\n \"graphql-yoga\": \"^5.6.2\",\n \"hono\": \"^4.0.8\",\n \"jsonwebtoken\": \"^9.0.2\",\n \"lucide-react\": \"^0.474.0\",\n \"mime\": \"^4.0.6\",\n \"openid-client\": \"^6.1.7\",\n \"postcss-load-config\": \"^6.0.1\",\n \"react-router\": \"^7.1.5\",\n \"sharp\": \"^0.33.5\",\n \"tailwind-merge\": \"^3.0.1\",\n \"tiny-glob\": \"^0.2.9\",\n \"toucan-js\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"devDependencies\": {\n \"@sentry/types\": \"^8.54.0\",\n \"@tailwindcss/postcss\": \"^4.0.6\",\n \"@types/react\": \"^19.0.8\",\n \"@types/react-dom\": \"^19.0.4\",\n \"tailwindcss\": \"^4.0.4\",\n \"tailwindcss-animate\": \"^1.0.7\",\n \"tsc-alias\": \"^1.8.11\"\n },\n \"peerDependencies\": {\n \"@tailwindcss/postcss\": \"^4.0.4\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.5.1\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n },\n \"react-dom\": {\n \"optional\": true\n },\n \"@tailwindcss/postcss\": {\n \"optional\": true\n },\n \"autoprefixer\": {\n \"optional\": true\n }\n }\n}\n", "import {asyncContext, Context} from './context'\n\nexport function getEnv() {\n const start = Date.now()\n const skipTracing = arguments[0] === true\n\n try {\n const context = asyncContext.getStore() as Context\n\n // Fall back to process.env or an empty object if no context is available\n // This is useful for testing\n // ref: https://hono.dev/docs/guides/testing#env\n const ctx = context.env || process.env || {}\n\n ctx.NODE_ENV = ctx.NODE_ENV || process.env.NODE_ENV || 'development'\n\n return ctx\n } catch {\n return process.env\n } finally {\n if (!skipTracing) {\n }\n }\n}\n", "import {Env} from './context.js'\n\nexport {ServiceError} from './define-pylon.js'\nexport {useAuth, requireAuth, authMiddleware} from './plugins/use-auth/index.js'\nexport {\n Context,\n Env,\n Variables,\n Bindings,\n asyncContext,\n getContext,\n setContext\n} from './context.js'\nimport {app as pylonApp} from './app/index.js'\nexport {pylonApp as app}\nexport {handler, executeConfig} from './app/pylon-handler.js'\nexport {getEnv} from './get-env.js'\nexport {createDecorator} from './create-decorator.js'\nexport {createPubSub as experimentalCreatePubSub} from 'graphql-yoga'\n\nexport {usePages} from './plugins/use-pages'\n\nimport type {Plugin as YogaPlugin} from 'graphql-yoga'\nimport {MiddlewareHandler} from 'hono'\nimport {BuildContext, BuildOptions} from 'esbuild'\n\nexport type Plugin<\n PluginContext extends Record<string, any> = {},\n TServerContext extends Record<string, any> = {},\n TUserContext = {}\n> = YogaPlugin<PluginContext, TServerContext, TUserContext> & {\n middleware?: MiddlewareHandler<Env>\n setup?: (app: typeof pylonApp) => Promise<void> | void\n build?: <T extends BuildOptions>(args: {\n onBuild: () => void\n }) => Promise<Omit<BuildContext<T>, 'serve'>>\n}\n\nexport type PylonConfig = {\n landingPage?: boolean\n graphiql?: boolean\n plugins?: Plugin[]\n}\n\nexport type ID = string & {readonly brand?: unique symbol}\nexport type Int = number & {readonly brand?: unique symbol}\nexport type Float = number & {readonly brand?: unique symbol}\n", "import fs from 'fs'\nimport path from 'path'\nimport reactServer from 'react-dom/server'\n\nimport {Env, getEnv, type Plugin} from '@/index'\nimport {UseHydrateCacheOptions} from '@gqty/react'\nimport {trimTrailingSlash} from 'hono/trailing-slash'\nimport {\n createStaticHandler,\n createStaticRouter,\n StaticRouter,\n StaticRouterProvider\n} from 'react-router'\nimport {PassThrough, Readable} from 'stream'\nimport mime from 'mime/lite'\n\nimport ErrorPage from '@/components/global-error-page'\nimport {MiddlewareHandler} from 'hono'\nimport {tmpdir} from 'os'\nimport {pipeline} from 'stream/promises'\n\nexport interface PageData {}\n\nexport type PageProps = {\n data: PageData\n params: Record<string, string>\n searchParams: Record<string, string>\n path: string\n}\n\nconst disableCacheMiddleware: MiddlewareHandler<Env> = async (c, next) => {\n const env = getEnv()\n // Disable cache for all request for now\n // This is a temporary solution before we implement a proper cache control\n if (true || env.NODE_ENV === 'development') {\n c.header(\n 'Cache-Control',\n 'no-store, no-cache, must-revalidate, proxy-revalidate'\n )\n c.header('Pragma', 'no-cache')\n c.header('Expires', '0')\n c.header('Surrogate-Control', 'no-store')\n }\n\n return next()\n}\n\nexport const setup: Plugin['setup'] = async app => {\n const cacheBustingSuffix = `?v=${Date.now()}`\n\n const slugs = (await import(`${process.cwd()}/.pylon/slugs.js`)).default\n const routes = (await import(`${process.cwd()}/.pylon/__pylon/pages/app.js`))\n .default\n const client = await import(`${process.cwd()}/.pylon/client/index.js`)\n\n let handler = createStaticHandler(routes)\n\n app.use(trimTrailingSlash() as any)\n\n app.get('/test1234', async c => {\n return c.json({hello: 'world'})\n })\n\n app.on('GET', slugs, disableCacheMiddleware as any, async c => {\n const context = await handler.query(c.req.raw)\n\n if (context instanceof Response) {\n return context\n }\n\n const router = createStaticRouter(handler.dataRoutes, context)\n\n const component = (\n <__PYLON_INTERNALS_DO_NOT_USE.DataClientProvider client={client}>\n <StaticRouterProvider router={router} context={context} />\n </__PYLON_INTERNALS_DO_NOT_USE.DataClientProvider>\n )\n\n // Check if the request wants JSON, if so, prepare the data\n if (c.req.header('accept')?.includes('application/json')) {\n const prepared = await client.prepareReactRender(component)\n\n const data = prepared.cacheSnapshot\n\n return c.json(data)\n }\n\n try {\n let cacheSnapshot: UseHydrateCacheOptions | undefined = undefined\n\n try {\n const prepared = await client.prepareReactRender(<></>)\n\n cacheSnapshot = prepared.cacheSnapshot\n } catch (error) {}\n\n if (reactServer.renderToReadableStream) {\n try {\n const stream = await reactServer.renderToReadableStream(component, {\n bootstrapModules: ['/__pylon/static/app.js' + cacheBustingSuffix]\n })\n\n return c.body(stream)\n } catch (error) {\n throw error\n }\n } else if (reactServer.renderToPipeableStream) {\n return await new Promise<Response>((resolve, reject) => {\n const {pipe} = reactServer.renderToPipeableStream(\n component,\n\n {\n bootstrapModules: ['/__pylon/static/app.js' + cacheBustingSuffix],\n onShellReady: async () => {\n c.header('Content-Type', 'text/html')\n\n const passThrough = new PassThrough()\n\n pipe(passThrough)\n\n resolve(c.body(Readable.toWeb(passThrough) as any))\n },\n onShellError: async error => {\n reject(error)\n }\n }\n )\n })\n } else {\n throw new Error('Environment not supported')\n }\n } catch (error) {\n c.header('Content-Type', 'text/html')\n c.status(500)\n\n return c.html(\n reactServer.renderToString(<ErrorPage error={error as any} />)\n )\n }\n })\n\n const publicFilesPath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public'\n )\n let publicFiles: string[] = []\n\n try {\n publicFiles = glob(`**/*`, {\n filesOnly: true,\n cwd: publicFilesPath\n })\n } catch (error) {\n // Ignore error\n }\n\n app.on(\n 'GET',\n publicFiles.map(file => `/${file}`),\n disableCacheMiddleware as any,\n async c => {\n const publicFilePath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public',\n c.req.path.replace('/', '')\n )\n\n return serveFilePath({filePath: publicFilePath, context: c})\n }\n )\n\n app.get('/__pylon/static/*', disableCacheMiddleware as any, async c => {\n const filePath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'static',\n c.req.path.replace('/__pylon/static/', '')\n )\n\n return serveFilePath({filePath, context: c})\n })\n\n // Image optimization route\n app.get('/__pylon/image', async c => {\n try {\n const {\n src,\n w,\n h,\n q = '75',\n format = 'webp',\n lqip = 'false'\n } = c.req.query()\n\n if (!src) {\n return c.json({error: 'Missing parameters.'}, 400)\n }\n\n const isSrcAbsolute =\n src.startsWith('http://') || src.startsWith('https://')\n\n let imagePath: string\n\n if (isSrcAbsolute) {\n imagePath = await downloadImage(src)\n } else {\n if (!src.startsWith('/')) {\n return c.json({error: 'Invalid image path.'}, 400)\n }\n\n if (!src.startsWith('/__pylon/static/media')) {\n // Prefix it with the public directory\n imagePath = path.join(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public',\n src\n )\n } else {\n imagePath = path.join(process.cwd(), '.pylon', src)\n }\n }\n\n // Check cache first\n const cachedImageFileName = getCachedImagePath({\n src,\n width: w ? parseInt(w) : 0,\n height: h ? parseInt(h) : 0,\n quality: q,\n lqip: lqip === 'true',\n format: format as keyof FormatEnum\n })\n\n // Check if the image exists asynchronously\n try {\n await fs.promises.access(imagePath)\n } catch {\n return c.json({error: 'Image not found'}, 404)\n }\n\n if (IS_IMAGE_CACHE_POSSIBLE) {\n try {\n await fs.promises.access(cachedImageFileName)\n const stream = fs.createReadStream(cachedImageFileName)\n c.res.headers.set('Content-Type', getContentType(format))\n return c.body(Readable.toWeb(stream) as ReadableStream)\n } catch (e) {\n // Proceed to optimize and cache the image if it doesn't exist\n }\n }\n\n const sharp = (await import('sharp')).default\n\n // Get image metadata (width and height) to calculate aspect ratio\n const metadata = await sharp(imagePath).metadata()\n\n // Validate if the metadata contains width and height\n if (!metadata.width || !metadata.height) {\n return c.json(\n {\n error:\n 'Invalid image metadata. Width and height are required for resizing.'\n },\n 400\n )\n }\n\n // Calculate missing dimension\n const {width: finalWidth, height: finalHeight} = calculateDimensions(\n metadata.width,\n metadata.height,\n w ? parseInt(w) : undefined,\n h ? parseInt(h) : undefined\n )\n\n let imageFormat = format.toLowerCase()\n\n function isSupportedFormat(format: string): format is keyof FormatEnum {\n const supportedFormats = sharp.format\n return Object.keys(supportedFormats).includes(format)\n }\n\n if (!isSupportedFormat(imageFormat)) {\n throw new Error('Unsupported image format')\n }\n\n const quality = parseInt(q)\n\n let data = sharp(imagePath)\n\n if (lqip === 'true') {\n data = data\n .resize({\n width: Math.min(finalWidth ?? 16, 16),\n height: Math.min(finalHeight ?? 16, 16),\n fit: 'inside'\n })\n .toFormat('webp', {\n quality: 30,\n alphaQuality: 20,\n smartSubsample: true\n })\n } else {\n data = data.resize(finalWidth, finalHeight).toFormat(imageFormat, {\n quality\n })\n }\n\n if (IS_IMAGE_CACHE_POSSIBLE) {\n const image = await data.toFile(cachedImageFileName)\n c.res.headers.set('Content-Type', getContentType(image.format))\n\n return c.body(\n Readable.toWeb(\n fs.createReadStream(cachedImageFileName)\n ) as unknown as ReadableStream\n )\n } else {\n const image = await data.toBuffer({resolveWithObject: true})\n c.res.headers.set('Content-Type', getContentType(image.info.format))\n\n return c.body(image.data as any)\n }\n } catch (error) {\n console.error('Error processing the image:', error)\n return c.json({error: 'Error processing the image'}, 500)\n }\n })\n}\n\nimport {createHash} from 'crypto'\nimport type {FormatEnum} from 'sharp'\nimport glob from 'tiny-glob/sync.js'\nimport {serveFilePath} from './serve-file-path'\nimport {__PYLON_INTERNALS_DO_NOT_USE} from '@getcronit/pylon/pages'\n\n// Cache directory\n\nconst IMAGE_CACHE_DIR = path.join(process.cwd(), '.cache/__pylon/images')\n\nlet IS_IMAGE_CACHE_POSSIBLE = true\n\n// Ensure the cache directory exists (if creating files is allowed)\ntry {\n await fs.promises.mkdir(IMAGE_CACHE_DIR, {recursive: true})\n} catch (error) {\n IS_IMAGE_CACHE_POSSIBLE = false\n}\n\n// Helper function to generate the cached image path\nconst getCachedImagePath = (args: {\n src: string\n width: number\n height: number\n quality: string\n lqip: boolean\n format: keyof FormatEnum\n}) => {\n const fileName = `${path.basename(\n createHash('md5').update(JSON.stringify(args)).digest('hex'),\n path.extname(args.src)\n )}-${args.width}x${args.height}.${args.format}`\n return path.join(IMAGE_CACHE_DIR, fileName)\n}\n\nconst getValuesFromCachedImagePath = (cachedImagePath: string) => {\n const fileName = path.basename(cachedImagePath)\n const [hash, dimensions, format] = fileName.split('.')\n const [width, height] = dimensions.split('x').map(Number)\n return {hash, width, height, format}\n}\n\n// Utility function to calculate missing dimension based on aspect ratio\nconst calculateDimensions = (\n originalWidth: number,\n originalHeight: number,\n width?: number,\n height?: number\n) => {\n if (!width && !height) {\n return {width: originalWidth, height: originalHeight}\n }\n if (width && !height) {\n // Calculate height based on the aspect ratio\n height = Math.round((width * originalHeight) / originalWidth)\n } else if (height && !width) {\n // Calculate width based on the aspect ratio\n width = Math.round((height * originalWidth) / originalHeight)\n }\n return {width, height}\n}\n\n// Helper function to get the correct Content-Type based on the format\nconst getContentType = (format: string) => {\n switch (format.toLowerCase()) {\n case 'webp':\n return 'image/webp'\n case 'jpeg':\n case 'jpg':\n return 'image/jpeg'\n case 'png':\n return 'image/png'\n case 'gif':\n return 'image/gif'\n case 'svg':\n return 'image/svg+xml'\n default:\n return 'application/octet-stream' // Fallback type if format is unknown\n }\n}\n\nconst downloadImage = async (url: string): Promise<string> => {\n const response = await fetch(url)\n if (!response.ok)\n throw new Error(`Failed to download image: ${response.statusText}`)\n\n const ext = path.extname(new URL(url).pathname) || '.jpg'\n const tempFilePath = path.join(tmpdir(), `image-${Date.now()}${ext}`)\n\n const fileStream = fs.createWriteStream(tempFilePath)\n\n await pipeline(response.body!, fileStream)\n\n return tempFilePath\n}\n", "import {useEffect} from 'react'\nimport Logo from '@/components/logo'\nimport {Button} from '@/components/ui/button'\n\ninterface GlobalErrorProps {\n error: Error & {digest?: string}\n}\n\nexport default function GlobalError({error, ...rest}: GlobalErrorProps) {\n useEffect(() => {\n // Log the error to an error reporting service\n console.error('Global error:', error)\n }, [error])\n\n const reset = () => {\n window.location.reload()\n }\n\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"stylesheet\"\n href=\"/__pylon/static/pylon.css\"\n precedence=\"high\"\n />\n </head>\n <body>\n <div className=\"fixed inset-0 bg-black/90 z-50 overflow-y-auto p-4 flex items-center justify-center\">\n <div className=\"w-full max-w-3xl bg-black border border-red-600 rounded-lg overflow-hidden text-white font-sans\">\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-neutral-800 p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-shrink-0\">\n <Logo className=\"h-8 w-auto text-white\" />\n </div>\n <div>\n <h1 className=\"text-xl font-medium text-red-500\">\n Application Crashed\n </h1>\n </div>\n </div>\n </div>\n\n {/* Error Message */}\n <div className=\"p-4\">\n <div className=\"mb-4 text-neutral-400\">\n The application encountered a critical error and could not\n continue.\n </div>\n\n <h2 className=\"text-2xl font-bold mb-4 text-white\">\n {error.message || 'A critical error occurred'}\n </h2>\n\n {error.digest && (\n <div className=\"mb-4\">\n <h3 className=\"text-sm uppercase tracking-wider text-neutral-500 font-medium mb-2\">\n Error ID\n </h3>\n <div className=\"bg-neutral-900 rounded-md p-3 text-neutral-300 font-mono\">\n {error.digest}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </body>\n </html>\n )\n}\n", "import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n", "import {cn} from '@/lib/utils'\n\nconst Logo: React.FC<{className?: string}> = props => {\n return (\n <svg\n className={cn('h-12 w-auto', props.className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n zoomAndPan=\"magnify\"\n viewBox=\"0 0 286.5 121.500001\"\n preserveAspectRatio=\"xMidYMid meet\"\n version=\"1.0\">\n <defs>\n <g />\n <clipPath id=\"38f6fcde47\">\n <path\n d=\"M 0.339844 42 L 10 42 L 10 79 L 0.339844 79 Z M 0.339844 42 \"\n clipRule=\"nonzero\"\n />\n </clipPath>\n <clipPath id=\"af000f7256\">\n <path\n d=\"M 64 23.925781 L 72.789062 23.925781 L 72.789062 96.378906 L 64 96.378906 Z M 64 23.925781 \"\n clipRule=\"nonzero\"\n />\n </clipPath>\n </defs>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(107.11969, 78.49768)\">\n <g>\n <path d=\"M 10.078125 -25.046875 C 11.109375 -26.398438 12.507812 -27.535156 14.28125 -28.453125 C 16.0625 -29.378906 18.070312 -29.84375 20.3125 -29.84375 C 22.863281 -29.84375 25.195312 -29.210938 27.3125 -27.953125 C 29.425781 -26.691406 31.085938 -24.921875 32.296875 -22.640625 C 33.503906 -20.367188 34.109375 -17.757812 34.109375 -14.8125 C 34.109375 -11.863281 33.503906 -9.222656 32.296875 -6.890625 C 31.085938 -4.566406 29.425781 -2.753906 27.3125 -1.453125 C 25.195312 -0.160156 22.863281 0.484375 20.3125 0.484375 C 18.070312 0.484375 16.078125 0.03125 14.328125 -0.875 C 12.585938 -1.78125 11.171875 -2.910156 10.078125 -4.265625 L 10.078125 13.96875 L 4 13.96875 L 4 -29.359375 L 10.078125 -29.359375 Z M 27.921875 -14.8125 C 27.921875 -16.84375 27.503906 -18.59375 26.671875 -20.0625 C 25.835938 -21.539062 24.734375 -22.660156 23.359375 -23.421875 C 21.992188 -24.179688 20.53125 -24.5625 18.96875 -24.5625 C 17.445312 -24.5625 16 -24.171875 14.625 -23.390625 C 13.257812 -22.609375 12.160156 -21.472656 11.328125 -19.984375 C 10.492188 -18.492188 10.078125 -16.734375 10.078125 -14.703125 C 10.078125 -12.679688 10.492188 -10.914062 11.328125 -9.40625 C 12.160156 -7.894531 13.257812 -6.75 14.625 -5.96875 C 16 -5.1875 17.445312 -4.796875 18.96875 -4.796875 C 20.53125 -4.796875 21.992188 -5.191406 23.359375 -5.984375 C 24.734375 -6.785156 25.835938 -7.953125 26.671875 -9.484375 C 27.503906 -11.015625 27.921875 -12.789062 27.921875 -14.8125 Z M 27.921875 -14.8125 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(143.259256, 78.49768)\">\n <g>\n <path d=\"M 30.4375 -29.359375 L 12.421875 13.796875 L 6.125 13.796875 L 12.09375 -0.484375 L 0.53125 -29.359375 L 7.296875 -29.359375 L 15.5625 -6.984375 L 24.140625 -29.359375 Z M 30.4375 -29.359375 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(174.281707, 78.49768)\">\n <g>\n <path d=\"M 10.078125 -39.4375 L 10.078125 0 L 4 0 L 4 -39.4375 Z M 10.078125 -39.4375 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(188.353752, 78.49768)\">\n <g>\n <path d=\"M 16.734375 0.484375 C 13.960938 0.484375 11.457031 -0.144531 9.21875 -1.40625 C 6.976562 -2.664062 5.21875 -4.441406 3.9375 -6.734375 C 2.664062 -9.035156 2.03125 -11.691406 2.03125 -14.703125 C 2.03125 -17.691406 2.6875 -20.335938 4 -22.640625 C 5.3125 -24.953125 7.101562 -26.726562 9.375 -27.96875 C 11.65625 -29.21875 14.195312 -29.84375 17 -29.84375 C 19.8125 -29.84375 22.351562 -29.21875 24.625 -27.96875 C 26.894531 -26.726562 28.6875 -24.953125 30 -22.640625 C 31.320312 -20.335938 31.984375 -17.691406 31.984375 -14.703125 C 31.984375 -11.722656 31.304688 -9.078125 29.953125 -6.765625 C 28.597656 -4.453125 26.757812 -2.664062 24.4375 -1.40625 C 22.113281 -0.144531 19.546875 0.484375 16.734375 0.484375 Z M 16.734375 -4.796875 C 18.296875 -4.796875 19.757812 -5.164062 21.125 -5.90625 C 22.5 -6.65625 23.613281 -7.773438 24.46875 -9.265625 C 25.320312 -10.765625 25.75 -12.578125 25.75 -14.703125 C 25.75 -16.835938 25.335938 -18.640625 24.515625 -20.109375 C 23.703125 -21.585938 22.617188 -22.695312 21.265625 -23.4375 C 19.910156 -24.1875 18.453125 -24.5625 16.890625 -24.5625 C 15.328125 -24.5625 13.878906 -24.1875 12.546875 -23.4375 C 11.210938 -22.695312 10.15625 -21.585938 9.375 -20.109375 C 8.59375 -18.640625 8.203125 -16.835938 8.203125 -14.703125 C 8.203125 -11.546875 9.007812 -9.101562 10.625 -7.375 C 12.25 -5.65625 14.285156 -4.796875 16.734375 -4.796875 Z M 16.734375 -4.796875 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(222.361196, 78.49768)\">\n <g>\n <path d=\"M 18.8125 -29.84375 C 21.125 -29.84375 23.191406 -29.363281 25.015625 -28.40625 C 26.847656 -27.445312 28.28125 -26.023438 29.3125 -24.140625 C 30.34375 -22.253906 30.859375 -19.984375 30.859375 -17.328125 L 30.859375 0 L 24.84375 0 L 24.84375 -16.421875 C 24.84375 -19.046875 24.179688 -21.054688 22.859375 -22.453125 C 21.546875 -23.859375 19.753906 -24.5625 17.484375 -24.5625 C 15.210938 -24.5625 13.410156 -23.859375 12.078125 -22.453125 C 10.742188 -21.054688 10.078125 -19.046875 10.078125 -16.421875 L 10.078125 0 L 4 0 L 4 -29.359375 L 10.078125 -29.359375 L 10.078125 -26.015625 C 11.066406 -27.222656 12.332031 -28.160156 13.875 -28.828125 C 15.425781 -29.503906 17.070312 -29.84375 18.8125 -29.84375 Z M 18.8125 -29.84375 \" />\n </g>\n </g>\n </g>\n <path\n fill=\"currentColor\"\n d=\"M 53.359375 31.652344 L 53.359375 88.6875 L 62.410156 90.859375 L 62.410156 29.484375 Z M 53.359375 31.652344 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <g clipPath=\"url(#38f6fcde47)\">\n <path\n fill=\"currentColor\"\n d=\"M 0.339844 47.433594 L 0.339844 72.910156 C 0.339844 73.34375 0.410156 73.769531 0.554688 74.179688 C 0.699219 74.59375 0.90625 74.96875 1.175781 75.3125 C 1.445312 75.65625 1.765625 75.945312 2.132812 76.179688 C 2.503906 76.414062 2.898438 76.582031 3.324219 76.683594 L 9.390625 78.140625 L 9.390625 42.195312 L 3.3125 43.660156 C 2.890625 43.761719 2.492188 43.929688 2.125 44.164062 C 1.761719 44.402344 1.441406 44.6875 1.171875 45.03125 C 0.902344 45.375 0.695312 45.75 0.554688 46.164062 C 0.410156 46.574219 0.339844 46.996094 0.339844 47.433594 Z M 0.339844 47.433594 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </g>\n <g clipPath=\"url(#af000f7256)\">\n <path\n fill=\"currentColor\"\n d=\"M 64.996094 95.085938 L 64.996094 25.253906 C 64.996094 25.082031 65.027344 24.917969 65.09375 24.761719 C 65.160156 24.601562 65.253906 24.460938 65.375 24.339844 C 65.496094 24.21875 65.636719 24.125 65.792969 24.0625 C 65.953125 23.996094 66.117188 23.960938 66.289062 23.960938 L 71.460938 23.960938 C 71.632812 23.960938 71.796875 23.996094 71.957031 24.0625 C 72.113281 24.125 72.253906 24.21875 72.375 24.339844 C 72.496094 24.460938 72.589844 24.601562 72.65625 24.761719 C 72.722656 24.917969 72.753906 25.082031 72.753906 25.253906 L 72.753906 95.085938 C 72.753906 95.257812 72.722656 95.421875 72.65625 95.582031 C 72.589844 95.738281 72.496094 95.878906 72.375 96 C 72.253906 96.121094 72.113281 96.214844 71.957031 96.28125 C 71.796875 96.347656 71.632812 96.378906 71.460938 96.378906 L 66.289062 96.378906 C 66.117188 96.378906 65.953125 96.347656 65.792969 96.28125 C 65.636719 96.214844 65.496094 96.121094 65.375 96 C 65.253906 95.878906 65.160156 95.738281 65.09375 95.582031 C 65.027344 95.421875 64.996094 95.257812 64.996094 95.085938 Z M 64.996094 95.085938 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </g>\n <path\n fill=\"currentColor\"\n d=\"M 22.320312 81.238281 L 22.320312 39.101562 L 11.976562 41.585938 L 11.976562 78.757812 Z M 22.320312 81.238281 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <path\n fill=\"currentColor\"\n d=\"M 50.769531 88.066406 L 50.769531 32.277344 L 37.839844 35.378906 L 37.839844 84.960938 Z M 50.769531 88.066406 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <path\n fill=\"currentColor\"\n d=\"M 24.90625 81.863281 L 35.253906 84.34375 L 35.253906 35.996094 L 24.90625 38.480469 Z M 24.90625 81.863281 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </svg>\n )\n}\n\nexport default Logo\n", "import {Context} from '@/context'\nimport {access, stat} from 'fs/promises'\nimport {createReadStream} from 'fs'\nimport mime from 'mime'\nimport {Readable} from 'stream'\n\nexport const serveFilePath = async ({\n filePath,\n context\n}: {\n filePath: string\n context: Context\n}) => {\n try {\n await access(filePath)\n } catch (error) {\n return context.notFound()\n }\n\n try {\n const contentType = mime.getType(filePath) || 'application/octet-stream'\n\n context.header('Content-Type', contentType)\n\n let options: {start?: number; end?: number} = {}\n let start: number | undefined\n let end: number | undefined\n\n const range = context.req.header('Range')\n\n if (range) {\n const bytesPrefix = 'bytes='\n if (range.startsWith(bytesPrefix)) {\n const bytesRange = range.substring(bytesPrefix.length)\n const parts = bytesRange.split('-')\n\n if (parts.length === 2) {\n const rangeStart = parts[0]?.trim()\n if (rangeStart) {\n options.start = start = parseInt(rangeStart, 10)\n }\n\n const rangeEnd = parts[1]?.trim()\n if (rangeEnd) {\n options.end = end = parseInt(rangeEnd, 10)\n }\n }\n }\n }\n\n context.header('Accept-Ranges', 'bytes')\n\n const fileStat = await stat(filePath)\n const contentLength = fileStat.size\n\n if (context.req.method === 'HEAD') {\n context.status(200)\n context.header('Accept-Ranges', 'bytes')\n context.header('Content-Length', contentLength.toString())\n\n return context.body(null, 200)\n }\n\n let retrievedLength: number\n if (start !== undefined && end !== undefined) {\n retrievedLength = end + 1 - start\n } else if (start !== undefined) {\n retrievedLength = contentLength - start\n } else if (end !== undefined) {\n retrievedLength = end + 1\n } else {\n retrievedLength = contentLength\n }\n\n context.status(start !== undefined || end !== undefined ? 206 : 200)\n\n context.header('Content-Length', retrievedLength.toString())\n\n if (range !== undefined) {\n context.header(\n 'Content-Range',\n `bytes ${start || 0}-${end || contentLength - 1}/${contentLength}`\n )\n context.header('Accept-Ranges', 'bytes')\n }\n\n const stream = createReadStream(filePath, options)\n const webStream = Readable.toWeb(stream) as ReadableStream\n\n return context.body(webStream)\n } catch (error) {\n return context.text('Error reading file', 500)\n }\n}\n", "import path from 'path'\nimport {Plugin} from '@/index'\nimport {makeAppFiles} from './app-utils'\nimport chokidar, {FSWatcher} from 'chokidar'\nimport fs from 'fs/promises'\nimport esbuild from 'esbuild'\nimport {injectAppHydrationPlugin} from './plugins/inject-app-hydration'\nimport {imagePlugin} from './plugins/image-plugin'\nimport {postcssPlugin} from './plugins/postcss-plugin'\n\nconst DIST_STATIC_DIR = path.join(process.cwd(), '.pylon/__pylon/static')\nconst DIST_PAGES_DIR = path.join(process.cwd(), '.pylon/__pylon/pages')\n\nasync function updateFileIfChanged(\n path: string,\n newContent: Uint8Array<ArrayBufferLike>\n) {\n try {\n const currentContent = await fs.readFile(path)\n if (currentContent.equals(newContent)) {\n return false // No update needed\n }\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err // Ignore file not found error\n }\n\n await fs.writeFile(path, newContent)\n return true // File created or updated\n}\n\nexport const build: Plugin['build'] = async () => {\n const buildAppFile = async () => {\n const appFiles = makeAppFiles()\n\n await updateFileIfChanged(\n path.resolve(process.cwd(), '.pylon', 'app.tsx'),\n Buffer.from(appFiles.routes)\n )\n await updateFileIfChanged(\n path.resolve(process.cwd(), '.pylon', 'slugs.js'),\n Buffer.from(appFiles.slugs)\n )\n }\n\n const copyPublicDir = async () => {\n // Copy the ./public directory content to the .pylon/__pylon/static directory\n const publicDir = path.resolve(process.cwd(), 'public')\n const pylonPublicDir = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public'\n )\n\n try {\n await fs.access(publicDir)\n\n // Copy recursively the public directory to the static directory\n await fs.mkdir(pylonPublicDir, {recursive: true})\n await fs.cp(publicDir, pylonPublicDir, {recursive: true})\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err // Ignore file not found error\n }\n }\n\n const copyPylonCSS = async () => {\n const pylonCssPathDir = path.join(\n process.cwd(),\n 'node_modules',\n '@getcronit/pylon/dist/pages'\n )\n\n const pylonCssDestDir = path.join(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'static'\n )\n\n // Copy pylon.css and pylon.css.map to the static directory\n\n await fs.mkdir(pylonCssDestDir, {recursive: true})\n await fs.cp(\n path.join(pylonCssPathDir, 'index.css'),\n path.join(pylonCssDestDir, 'pylon.css')\n )\n await fs.cp(\n path.join(pylonCssPathDir, 'index.css.map'),\n path.join(pylonCssDestDir, 'pylon.css.map')\n )\n }\n\n const writeOnEndPlugin: esbuild.Plugin = {\n name: 'write-on-end',\n setup(build) {\n build.onEnd(async result => {\n await Promise.all(\n result.outputFiles!.map(async file => {\n await fs.mkdir(path.dirname(file.path), {recursive: true})\n await updateFileIfChanged(file.path, file.contents)\n })\n )\n })\n }\n }\n\n const nodePaths = [\n path.join(process.cwd(), 'node_modules'),\n path.join(process.cwd(), 'node_modules', '@getcronit/pylon/node_modules')\n ]\n\n let pagesWatcher: FSWatcher | null = null\n\n const clientCtx = await esbuild.context({\n sourcemap: 'linked',\n write: false,\n metafile: true,\n nodePaths,\n absWorkingDir: process.cwd(),\n plugins: [\n injectAppHydrationPlugin,\n imagePlugin,\n postcssPlugin,\n writeOnEndPlugin\n ],\n publicPath: '/__pylon/static',\n assetNames: 'assets/[name]-[hash]',\n chunkNames: 'chunks/[name]-[hash]',\n format: 'esm',\n platform: 'browser',\n entryPoints: ['.pylon/app.tsx'],\n outdir: DIST_STATIC_DIR,\n bundle: true,\n splitting: true,\n minify: false,\n loader: {\n // Map file extensions to the file loader\n\n '.svg': 'file',\n '.woff': 'file',\n '.woff2': 'file',\n '.ttf': 'file',\n '.otf': 'file'\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify(\n process.env.NODE_ENV || 'development'\n )\n },\n mainFields: ['browser', 'module', 'main']\n })\n\n const serverCtx = await esbuild.context({\n sourcemap: 'inline',\n write: false,\n absWorkingDir: process.cwd(),\n nodePaths,\n plugins: [imagePlugin, postcssPlugin, writeOnEndPlugin],\n publicPath: '/__pylon/static',\n assetNames: 'assets/[name]-[hash]',\n chunkNames: 'chunks/[name]-[hash]',\n format: 'esm',\n platform: 'node',\n entryPoints: ['.pylon/app.tsx'],\n outdir: DIST_PAGES_DIR,\n bundle: true,\n splitting: false,\n external: ['@getcronit/pylon', 'react', 'react-dom', 'gqty', '@gqty/react'],\n minify: true,\n loader: {\n // Map file extensions to the file loader\n\n '.svg': 'file',\n '.woff': 'file',\n '.woff2': 'file',\n '.ttf': 'file',\n '.otf': 'file'\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify(\n process.env.NODE_ENV || 'development'\n )\n },\n mainFields: ['module', 'main']\n })\n\n return {\n watch: async () => {\n pagesWatcher = chokidar.watch('pages', {ignoreInitial: true})\n\n pagesWatcher!.on('all', async (event, path) => {\n if (['add', 'change', 'unlink'].includes(event)) {\n await buildAppFile()\n await copyPublicDir()\n await copyPylonCSS()\n }\n })\n\n await Promise.all([clientCtx.watch(), serverCtx.watch()])\n },\n dispose: async () => {\n if (pagesWatcher) {\n pagesWatcher.close()\n }\n\n Promise.all([clientCtx.dispose(), serverCtx.dispose()])\n },\n rebuild: async () => {\n await buildAppFile()\n await copyPublicDir()\n await copyPylonCSS()\n\n await Promise.all([clientCtx.rebuild(), serverCtx.rebuild()])\n\n return {} as any\n },\n cancel: async () => {\n if (pagesWatcher) {\n await pagesWatcher.close()\n }\n\n await Promise.all([clientCtx.cancel(), serverCtx.cancel()])\n }\n }\n}\n", "import fs from 'fs'\nimport path from 'path'\n\nconst PAGES_DIR = './pages'\n\n/**\n * Interface representing a route configuration.\n */\ninterface Route {\n path?: string\n Component?: string\n errorElement?: string\n lazy?: string\n loader?: string\n index?: boolean\n children?: Route[]\n HydrateFallback?: string\n}\n\n/**\n * Array to collect import statements.\n */\nlet imports: string[] = []\n\n/**\n * Array to store the route slugs.\n */\nlet routeSlugs: string[] = []\n\n/**\n * Converts a file path to a corresponding layout component name.\n * @param filePath - The file path to convert.\n * @returns The generated layout component name.\n */\nfunction getLayoutComponentName(filePath: string): string {\n return (\n filePath\n .replace(PAGES_DIR, '')\n .replace(/\\\\/g, '/')\n .replace(/layout\\.tsx$/, '')\n .split('/')\n .filter(Boolean)\n .map(segment => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('') + 'Layout'\n )\n}\n\n/**\n * Converts dynamic route segments from [param] format to :param format.\n * @param segment - A segment of the route.\n * @returns The converted route segment.\n */\nfunction convertToDynamicRoute(segment: string): string {\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return `:${segment.slice(1, -1)}`\n }\n return segment\n}\n\n/**\n * Recursively scans a directory to build route objects.\n * @param directory - The directory to scan.\n * @param basePath - The base route path accumulated so far.\n * @returns A Route object or null if the directory does not define a route.\n */\nfunction scanDirectory(directory: string, basePath: string = ''): Route | null {\n const items = fs.readdirSync(directory, {withFileTypes: true})\n const route: Route = {path: basePath || '/', children: []}\n let hasLayout = false\n let pageFound = false\n\n for (const item of items) {\n const itemPath = path.join(directory, item.name)\n const relativePath = path.join(basePath, item.name).replace(/\\\\/g, '/')\n const importPath = `\"./${path\n .join('..', PAGES_DIR, relativePath)\n .replace(/\\.tsx$/, '')}\"`\n\n if (item.isDirectory()) {\n const childRoute = scanDirectory(itemPath, relativePath)\n if (childRoute) {\n route.children!.push(childRoute)\n }\n } else if (item.name === 'layout.tsx') {\n const layoutComponentName = getLayoutComponentName(relativePath)\n imports.push(`import ${layoutComponentName} from ${importPath};`)\n\n const componentName =\n layoutComponentName === 'Layout'\n ? `RootLayout`\n : `${layoutComponentName}`\n\n route.Component = `withLoaderData(() => <${componentName} children={<Outlet />} />)`\n\n if (route.path === '/') {\n route.errorElement = '<ErrorElement />'\n }\n\n route.HydrateFallback = 'HydrateFallback'\n\n hasLayout = true\n } else if (item.name === 'page.tsx') {\n // if (hasLayout) {\n // route.children!.push({\n // path: undefined,\n // index: true,\n // lazy: `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`,\n // loader: `loader`\n // })\n // } else {\n // route.lazy = `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`\n // route.loader = `loader`\n // if (basePath === '') {\n // route.index = true\n // }\n // }\n\n route.children!.push({\n path: undefined,\n index: true,\n lazy: `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`,\n loader: `loader`,\n HydrateFallback: 'HydrateFallback'\n })\n\n pageFound = true\n }\n }\n\n // Process dynamic segments on the route's own path\n if (route.path) {\n const segments = route.path\n .split('/')\n .map(segment => convertToDynamicRoute(segment))\n .filter(Boolean)\n const fullPath = segments.length > 0 ? `/${segments.join('/')}` : '/'\n route.path = segments[segments.length - 1] || '/'\n if (hasLayout || pageFound) {\n routeSlugs.push(fullPath)\n }\n }\n\n if (\n hasLayout ||\n route.lazy ||\n (route.children && route.children.length > 0)\n ) {\n return route\n }\n return null\n}\n\n/**\n * Serializes an object into a string that represents code.\n * @param obj - The object to serialize.\n * @returns The serialized representation.\n */\nfunction serialize(obj: any, parentKey?: string | number): string {\n if (Array.isArray(obj)) {\n return `[${obj.map(serialize).join(', ')}]`\n } else if (obj && typeof obj === 'object') {\n const entries = Object.entries(obj).map(\n ([key, value]) => `${JSON.stringify(key)}: ${serialize(value, key)}`\n )\n return `{${entries.join(', ')}}`\n } else if (typeof obj === 'string') {\n if (\n parentKey === 'lazy' ||\n parentKey === 'loader' ||\n parentKey === 'Component' ||\n parentKey === 'errorElement' ||\n parentKey === 'HydrateFallback'\n ) {\n return obj\n }\n\n return JSON.stringify(obj)\n } else {\n return String(obj)\n }\n}\n\n/**\n * Builds the route configuration and outputs the generated code.\n * @returns The complete file content as a string.\n */\nexport function makeAppFiles() {\n imports = []\n routeSlugs = []\n\n const rootRoute = scanDirectory(PAGES_DIR)\n const notFoundRoute: Route = {\n path: '*',\n Component: 'NotFoundPage'\n }\n\n const routes = `${imports.join('\\n')}\n\nimport {__PYLON_ROUTER_INTERNALS_DO_NOT_USE, __PYLON_INTERNALS_DO_NOT_USE, GlobalErrorPage} from '@getcronit/pylon/pages'\nconst Outlet = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.Outlet\n\nconst ErrorElement = () => {\n const error = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useRouteError()\n\n return <GlobalErrorPage error={error} />\n}\n\nconst HydrateFallback = () => {\n return <div>Loading...</div>\n}\n\nfunction withLoaderData<T>(Component: React.ComponentType<{ data: T }>) {\n return function WithLoaderDataWrapper(props: T) {\n const client = __PYLON_INTERNALS_DO_NOT_USE.useDataClient()\n const cacheSnapshot = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useLoaderData()\n\n\n const location = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useLocation()\n const [searchParams] = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useSearchParams()\n const searchParamsObject = Object.fromEntries(searchParams.entries())\n const params = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useParams()\n\n client.useHydrateCache({cacheSnapshot})\n const data = client.useQuery()\n\n return <Component {...(props as any)} path={location.pathname} params={params} searchParams={searchParamsObject} data={data} />;\n };\n}\n\nconst loader: __PYLON_ROUTER_INTERNALS_DO_NOT_USE.LoaderFunction = async ({ request }) => {\n if (\n request.headers.has('accept') &&\n request.headers.get('accept') === 'application/json'\n ) {\n // Skip the loader if the request is for JSON\n return null\n }\n const url = new URL(request.url)\n const headers = new Headers()\n headers.set('Accept', 'application/json')\n\n if (typeof process !== \"undefined\") {\n headers.set(\"Authorization\", process.env.PYLON_CLIENT_TOKEN || undefined);\n }\n \n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: headers,\n })\n const data = await response.json<object>()\n return data\n } catch (error) {\n return null\n }\n}\n\nconst RootLayout = (props: { children: React.ReactNode; [key: string]: any }) => {\n return (\n <Layout {...props}>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"stylesheet\" href=\"/__pylon/static/app.css\" precedence=\"high\" />\n {props.children}\n </Layout>\n )\n}\n\nconst NotFoundPage = () => {\n return <div>Page Not Found</div>\n}\n\nconst routes = ${serialize([rootRoute, notFoundRoute].filter(Boolean))}\n\nexport default routes\n\n`\n\n const slugs = `export default ${JSON.stringify(routeSlugs, null, 2)}`\n\n return {\n routes,\n slugs\n }\n}\n", "import {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\n\nexport const injectAppHydrationPlugin: Plugin = {\n name: 'inject-hydration',\n setup(build) {\n build.onLoad({filter: /.*/, namespace: 'file'}, async args => {\n // check if the file is the app.tsx file\n if (args.path === path.resolve(process.cwd(), '.pylon', 'app.tsx')) {\n let contents = await fs.readFile(args.path, 'utf-8')\n\n const clientPath = path.resolve(process.cwd(), '.pylon/client')\n\n const pathToClient = path.relative(path.dirname(args.path), clientPath)\n\n contents += `\n import {hydrateRoot} from 'react-dom/client'\n import * as client from './${pathToClient}'\n import { __PYLON_ROUTER_INTERNALS_DO_NOT_USE, __PYLON_INTERNALS_DO_NOT_USE, DevOverlay, onCaughtErrorProd, onRecoverableErrorProd, onUncaughtErrorProd } from '@getcronit/pylon/pages';\n const {createBrowserRouter, RouterProvider, matchRoutes} = __PYLON_ROUTER_INTERNALS_DO_NOT_USE\n const {DataClientProvider} = __PYLON_INTERNALS_DO_NOT_USE\n import React, {useMemo} from 'react'\n\n hydrate()\n\n async function hydrate() {\n // Determine if any of the initial routes are lazy\n const lazyMatches = matchRoutes(routes, window.location)?.filter(\n (m) => m.route.lazy\n );\n\n // Load the lazy matches and update the routes before creating your router\n // so we can hydrate the SSR-rendered content synchronously\n if (lazyMatches && lazyMatches?.length > 0) {\n await Promise.all(\n lazyMatches.map(async (m) => {\n const routeModule = await m.route.lazy!();\n Object.assign(m.route, { ...routeModule, lazy: undefined });\n })\n );\n }\n\n const router = createBrowserRouter(routes)\n\n hydrateRoot(\n document,\n <DataClientProvider client={client}>\n <RouterProvider router={router} />\n </DataClientProvider>\n )\n }\n\n\n `\n\n return {\n loader: 'tsx',\n contents\n }\n }\n })\n }\n}\n", "import {createHash} from 'crypto'\nimport {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\n\nexport const imagePlugin: Plugin = {\n name: 'image-plugin',\n setup(build) {\n const outdir = build.initialOptions.outdir\n const publicPath = build.initialOptions.publicPath\n\n if (!outdir || !publicPath) {\n throw new Error('outdir and publicPath must be set in esbuild options')\n }\n\n build.onResolve({filter: /\\.(png|jpe?g)$/}, async args => {\n const filePath = path.resolve(args.resolveDir, args.path)\n\n const fileName = path.basename(filePath)\n const extname = path.extname(filePath)\n const hash = createHash('md5')\n .update(filePath + (await fs.readFile(filePath)))\n .digest('hex')\n .slice(0, 8)\n const newFilename = `${fileName}-${hash}${extname}`\n const newFilePath = path.join(outdir, 'media', newFilename)\n\n // Ensure the directory exists\n await fs.mkdir(path.dirname(newFilePath), {recursive: true})\n\n // Copy the file\n await fs.copyFile(filePath, newFilePath)\n\n return {\n path: newFilePath,\n namespace: 'image'\n }\n })\n\n build.onLoad({filter: /\\.png$|\\.jpg$/}, async args => {\n const sharp = (await import('sharp')).default\n\n // Load file and read the dimensions\n const image = sharp(args.path)\n const metadata = await image.metadata()\n\n // Build the URL with the publicPath and w/h search params\n const url = `${publicPath}/media/${path.basename(args.path)}`\n\n const output = image\n .resize({\n width: Math.min(metadata.width ?? 16, 16),\n height: Math.min(metadata.height ?? 16, 16),\n fit: 'inside'\n })\n .toFormat('webp', {\n quality: 30,\n alphaQuality: 20,\n smartSubsample: true\n })\n\n const {data, info} = await output.toBuffer({resolveWithObject: true})\n const dataURIBase64 = `data:image/${info.format};base64,${data.toString(\n 'base64'\n )}`\n\n return {\n contents: JSON.stringify({\n url,\n width: metadata.width,\n height: metadata.height,\n blurDataURL: dataURIBase64\n }),\n loader: 'json'\n }\n })\n }\n}\n", "import {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\nimport loadConfig from 'postcss-load-config'\nimport postcss from 'postcss'\n\nexport const postcssPlugin: Plugin = {\n name: 'postcss-plugin',\n setup(build) {\n build.onLoad({filter: /.css$/, namespace: 'file'}, async args => {\n const {plugins, options} = await loadConfig()\n\n const css = await fs.readFile(args.path, 'utf-8')\n\n const result = await postcss(plugins)\n .process(css, {\n ...options,\n from: args.path\n })\n .then(result => result)\n\n return {\n contents: result.css,\n loader: 'css'\n }\n })\n }\n}\n", "import {Plugin} from '@/index'\nimport {setup, PageData, PageProps} from './setup'\nimport {build} from './build'\n\nexport {PageData, PageProps}\n\nexport function usePages(): Plugin {\n return {\n setup,\n build\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as Sentry from '@sentry/bun'\nimport consola from 'consola'\nimport {\n FragmentDefinitionNode,\n GraphQLError,\n GraphQLErrorExtensions,\n GraphQLObjectType,\n GraphQLResolveInfo,\n SelectionSetNode\n} from 'graphql'\n\nimport {Context, asyncContext} from './context'\nimport {isAsyncIterable, Maybe} from 'graphql-yoga'\n\nexport interface Resolvers {\n Query: Record<string, any>\n Mutation?: Record<string, any>\n Subscription?: Record<string, any>\n}\n\ntype FunctionWrapper = (fn: (...args: any[]) => any) => (...args: any[]) => any\n\nfunction getAllPropertyNames(instance: any): string[] {\n const allProps = new Set<string>()\n\n // Traverse the prototype chain\n let currentObj: any = instance\n\n while (currentObj && currentObj !== Object.prototype) {\n // Get all own property names of the current object\n const ownProps = Object.getOwnPropertyNames(currentObj)\n\n // Add each property to the Set\n ownProps.forEach(prop => allProps.add(prop))\n\n // Move up the prototype chain\n currentObj = Object.getPrototypeOf(currentObj)\n }\n\n // Convert Set to array and filter out the constructor if desired\n return Array.from(allProps).filter(prop => prop !== 'constructor')\n}\n\nasync function wrapFunctionsRecursively(\n obj: any,\n wrapper: FunctionWrapper,\n that: any = null,\n selectionSet: SelectionSetNode['selections'] = [],\n info: GraphQLResolveInfo\n): Promise<any> {\n // Skip if the object is a Date object or any other special object.\n // Those objects are then handled by custom resolvers.\n if (obj === null || obj instanceof Date) {\n return obj\n }\n\n if (Array.isArray(obj)) {\n return await Promise.all(\n obj.map(async item => {\n return await wrapFunctionsRecursively(\n item,\n wrapper,\n that,\n selectionSet,\n info\n )\n })\n )\n } else if (typeof obj === 'function') {\n return Sentry.startSpan(\n {\n name: obj.name,\n op: 'pylon.fn'\n },\n async () => {\n // @ts-ignore\n return await wrapper.call(that, obj, selectionSet, info)\n }\n )\n } else if (obj instanceof Promise) {\n return await wrapFunctionsRecursively(\n await obj,\n wrapper,\n that,\n selectionSet,\n info\n )\n } else if (isAsyncIterable(obj)) {\n return obj\n } else if (typeof obj === 'object') {\n that = obj\n\n const result: Record<string, any> = {}\n\n for (const key of getAllPropertyNames(obj)) {\n result[key] = await wrapFunctionsRecursively(\n obj[key],\n wrapper,\n that,\n selectionSet,\n info\n )\n }\n\n return result\n } else {\n return await obj\n }\n}\nfunction spreadFunctionArguments<T extends (...args: any[]) => any>(fn: T) {\n return (otherArgs: Record<string, any>, c: any, info: GraphQLResolveInfo) => {\n const selections = arguments[1] as SelectionSetNode['selections']\n const realInfo = arguments[2] as GraphQLResolveInfo\n\n let args: Record<string, any> = {}\n\n if (info) {\n const type = info.parentType\n\n const field = type.getFields()[info.fieldName]\n\n const fieldArguments = field?.args\n\n const preparedArguments = fieldArguments?.reduce(\n (acc: {[x: string]: undefined}, arg: {name: string | number}) => {\n if (otherArgs[arg.name] !== undefined) {\n acc[arg.name] = otherArgs[arg.name]\n } else {\n acc[arg.name] = undefined\n }\n\n return acc\n },\n {} as Record<string, any>\n )\n\n if (preparedArguments) {\n args = preparedArguments\n }\n } else {\n args = otherArgs\n }\n\n const orderedArgs = Object.keys(args).map(key => args[key])\n\n const that = this || {}\n\n const result = wrapFunctionsRecursively(\n fn.call(that, ...orderedArgs),\n spreadFunctionArguments,\n this,\n selections,\n realInfo\n )\n\n return result as ReturnType<typeof fn>\n }\n}\n\n/**\n * Converts a set of resolvers into a corresponding set of GraphQL resolvers.\n * @param resolvers The original resolvers.\n * @returns The converted GraphQL resolvers.\n */\nexport const resolversToGraphQLResolvers = (\n resolvers: Resolvers,\n configureContext?: (context: Context) => Context\n): Resolvers => {\n // Define a root resolver function that maps a given resolver function or object to a GraphQL resolver.\n const rootGraphqlResolver =\n (fn: Function | object | Promise<Function> | Promise<object>) =>\n async (\n _: object,\n args: Record<string, any>,\n ctx: Context,\n info: GraphQLResolveInfo\n ) => {\n return Sentry.withScope(async scope => {\n const ctx = asyncContext.getStore()\n\n if (!ctx) {\n consola.warn(\n 'Context is not defined. Make sure AsyncLocalStorage is supported in your environment.'\n )\n }\n\n ctx?.set('graphqlResolveInfo', info)\n\n const auth = ctx?.get('auth')\n\n if (auth?.user) {\n scope.setUser({\n id: auth.user.sub,\n username: auth.user.preferred_username,\n email: auth.user.email,\n details: auth.user\n })\n }\n\n // get query or mutation field\n\n let type: Maybe<GraphQLObjectType> | null = null\n\n switch (info.operation.operation) {\n case 'query':\n type = info.schema.getQueryType()\n break\n case 'mutation':\n type = info.schema.getMutationType()\n break\n case 'subscription':\n type = info.schema.getSubscriptionType()\n break\n default:\n throw new Error('Unknown operation')\n }\n\n const field = type?.getFields()[info.fieldName]\n\n // Get the list of arguments expected by the current query field.\n const fieldArguments = field?.args || []\n\n // Prepare the arguments for the resolver function call by adding any missing arguments with an undefined value.\n const preparedArguments = fieldArguments.reduce(\n (acc: {[x: string]: undefined}, arg: {name: string | number}) => {\n if (args[arg.name] !== undefined) {\n acc[arg.name] = args[arg.name]\n } else {\n acc[arg.name] = undefined\n }\n\n return acc\n },\n {} as Record<string, any>\n )\n\n // Determine the resolver function to call (either the given function or the wrappedWithContext function if it exists).\n let inner = await fn\n\n let baseSelectionSet: SelectionSetNode['selections'] = []\n\n // Find the selection set for the current field.\n for (const selection of info.operation.selectionSet.selections) {\n if (\n selection.kind === 'Field' &&\n selection.name.value === info.fieldName\n ) {\n baseSelectionSet = selection.selectionSet?.selections || []\n }\n }\n\n // Wrap the resolver function with any required middleware.\n const wrappedFn = await wrapFunctionsRecursively(\n inner,\n spreadFunctionArguments,\n this,\n baseSelectionSet,\n info\n )\n\n // Call the resolver function with the prepared arguments.\n if (typeof wrappedFn !== 'function') {\n return wrappedFn\n }\n\n const res = await wrappedFn(preparedArguments)\n\n return res\n })\n }\n\n // Convert the Query and Mutation resolvers to GraphQL resolvers.\n const graphqlResolvers = {} as Resolvers\n\n // Remove empty resolvers\n for (const key of Object.keys(resolvers.Query)) {\n if (!resolvers.Query[key]) {\n delete resolvers.Query[key]\n }\n }\n\n if (resolvers.Query && Object.keys(resolvers.Query).length > 0) {\n for (const [key, value] of Object.entries(resolvers.Query)) {\n if (!graphqlResolvers.Query) {\n graphqlResolvers.Query = {}\n }\n\n graphqlResolvers.Query[key] = rootGraphqlResolver(\n value as Function | object\n )\n }\n }\n\n if (resolvers.Mutation && Object.keys(resolvers.Mutation).length > 0) {\n if (!graphqlResolvers.Mutation) {\n graphqlResolvers.Mutation = {}\n }\n\n for (const [key, value] of Object.entries(resolvers.Mutation)) {\n graphqlResolvers.Mutation[key] = rootGraphqlResolver(\n value as Function | object\n )\n }\n }\n\n if (\n resolvers.Subscription &&\n Object.keys(resolvers.Subscription).length > 0\n ) {\n if (!graphqlResolvers.Subscription) {\n graphqlResolvers.Subscription = {}\n }\n\n for (const [key, value] of Object.entries(resolvers.Subscription)) {\n graphqlResolvers.Subscription[key] = {\n subscribe: rootGraphqlResolver(value as Function | object),\n resolve: (payload: any) => payload\n }\n }\n }\n\n // Query root type must be provided.\n if (!graphqlResolvers.Query) {\n // Custom Error for Query root type must be provided.\n\n throw new Error(`At least one 'Query' resolver must be provided.\n\nExample:\n\nexport const graphql = {\n Query: {\n // Define at least one query resolver here\n hello: () => 'world'\n }\n}\n`)\n }\n\n // Add extra resolvers (e.g. custom scalars) to the GraphQL resolvers.\n for (const key of Object.keys(resolvers)) {\n if (key !== 'Query' && key !== 'Mutation' && key !== 'Subscription') {\n graphqlResolvers[key] = resolvers[key]\n }\n }\n\n return graphqlResolvers\n}\n\nexport class ServiceError extends GraphQLError {\n extensions: GraphQLErrorExtensions\n\n constructor(\n message: string,\n extensions: {\n code: string\n statusCode: number\n details?: Record<string, any>\n },\n error?: Error\n ) {\n super(message, {\n originalError: error\n })\n this.extensions = extensions\n this.cause = error\n }\n}\n", "import {Context as HonoContext} from 'hono'\nimport type {Toucan} from 'toucan-js'\nimport type {AuthState} from './plugins/use-auth'\nimport {AsyncLocalStorage} from 'async_hooks'\nimport {env} from 'hono/adapter'\nimport type {GraphQLResolveInfo} from 'graphql'\n\nexport interface Bindings {\n NODE_ENV: string\n AUTH_PROJECT_ID?: string\n AUTH_KEY?: string\n AUTH_ISSUER?: string\n}\n\nexport interface Variables {\n auth: AuthState\n sentry: Toucan\n graphqlResolveInfo?: GraphQLResolveInfo\n}\n\nexport type Env = {\n Bindings: Bindings\n Variables: Variables\n}\n\nexport type Context = HonoContext<Env, string, {}>\n\nexport const asyncContext = new AsyncLocalStorage<Context>()\n\nexport const getContext = () => {\n const ctx = asyncContext.getStore()\n\n if (!ctx) {\n throw new Error('Context not defined')\n }\n\n ctx.env = env(ctx)\n\n return ctx\n}\n\nexport const setContext = (context: Context) => {\n return asyncContext.enterWith(context)\n}\n", "import {promises as fs} from 'fs'\nimport {deleteCookie, getCookie, setCookie} from 'hono/cookie'\nimport {HTTPException} from 'hono/http-exception'\nimport * as openid from 'openid-client'\nimport path from 'path'\nimport {getContext, type Plugin} from '../../index'\nimport {importPrivateKey} from './import-private-key'\n\ntype AuthKey = {\n type: 'application'\n keyId: string\n key: string\n appId: string\n clientId: string\n}\n\nconst loadAuthKey = async (keyPath: string): Promise<AuthKey> => {\n const authKeyFilePath = path.join(process.cwd(), keyPath)\n\n const env = getContext().env\n\n if (env.AUTH_KEY) {\n try {\n return JSON.parse(env.AUTH_KEY)\n } catch (error) {\n throw new Error(\n 'Error while reading AUTH_KEY. Make sure it is valid JSON'\n )\n }\n }\n\n try {\n const ketFileContent = await fs.readFile(authKeyFilePath, 'utf-8')\n\n try {\n return JSON.parse(ketFileContent)\n } catch (error) {\n throw new Error(\n 'Error while reading key file. Make sure it is valid JSON'\n )\n }\n } catch (error) {\n throw new Error('Error while reading key file. Make sure it exists')\n }\n}\n\nlet openidConfigCache: openid.Configuration | undefined\n\nconst bootstrapAuth = async (issuer: string, keyPath: string) => {\n if (!openidConfigCache) {\n const authKey = await loadAuthKey(keyPath)\n\n openidConfigCache = await openid.discovery(\n new URL(issuer),\n authKey.clientId,\n undefined,\n openid.PrivateKeyJwt({\n key: (await importPrivateKey(authKey.key)) as any,\n kid: authKey.keyId\n })\n )\n }\n\n return openidConfigCache\n}\n\nclass PylonAuthException extends HTTPException {\n // Same constructor as HTTPException\n constructor(...args: ConstructorParameters<typeof HTTPException>) {\n // Prefix the message with \"PylonAuthException: \"\n args[1] = {\n ...args[1],\n message: `PylonAuthException: ${args[1]?.message}`\n }\n\n super(...args)\n }\n}\n\nexport function useAuth(args: {\n issuer: string\n endpoint?: string\n keyPath?: string\n}): Plugin {\n const {issuer, endpoint = '/auth', keyPath = 'key.json'} = args\n\n const loginPath = `${endpoint}/login`\n const logoutPath = `${endpoint}/logout`\n const callbackPath = `${endpoint}/callback`\n\n return {\n middleware: async (ctx, next) => {\n const openidConfig = await bootstrapAuth(issuer, keyPath)\n\n ctx.set('auth', {openidConfig})\n\n // Introspect token\n const authCookieToken = getCookie(ctx, 'pylon-auth')\n const authHeader = ctx.req.header('Authorization')\n const authQueryToken = ctx.req.query('token')\n\n if (authCookieToken || authHeader || authQueryToken) {\n let token: string | undefined\n\n if (authHeader) {\n const [type, value] = authHeader.split(' ')\n if (type === 'Bearer') {\n token = value\n }\n } else if (authQueryToken) {\n token = authQueryToken\n } else if (authCookieToken) {\n token = authCookieToken\n }\n\n if (!token) {\n throw new PylonAuthException(401, {\n message: 'Invalid token'\n })\n }\n\n const introspection = await openid.tokenIntrospection(\n openidConfig,\n token,\n {\n scope: 'openid email profile'\n }\n )\n\n if (!introspection.active) {\n throw new PylonAuthException(401, {\n message: 'Token is not active'\n })\n }\n\n if (!introspection.sub) {\n throw new PylonAuthException(401, {\n message: 'Token is missing subject'\n })\n }\n\n // Fetch user info\n const userInfo = await openid.fetchUserInfo(\n openidConfig,\n token,\n introspection.sub\n )\n\n const roles = Object.keys(\n introspection['urn:zitadel:iam:org:projects:roles']?.valueOf() || {}\n )\n\n ctx.set('auth', {\n user: {\n ...userInfo,\n roles\n },\n openidConfig\n })\n\n return next()\n }\n },\n setup(app) {\n app.get(loginPath, async ctx => {\n const openidConfig = ctx.get('auth').openidConfig\n\n const codeVerifier = openid.randomPKCECodeVerifier() // PKCE code verifier\n const codeChallenge = await openid.calculatePKCECodeChallenge(\n codeVerifier\n )\n\n // Store the code verifier in a secure cookie (not accessible to JavaScript)\n setCookie(ctx, 'pylon_code_verifier', codeVerifier, {\n httpOnly: true,\n maxAge: 300 // 5 minutes\n })\n\n let scope =\n 'openid profile email urn:zitadel:iam:user:resourceowner urn:zitadel:iam:org:projects:roles'\n\n const parameters: Record<string, string> = {\n scope,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n redirect_uri: new URL(ctx.req.url).origin + '/auth/callback',\n state: openid.randomState()\n }\n\n const authorizationUrl = openid.buildAuthorizationUrl(\n openidConfig,\n parameters\n )\n\n return ctx.redirect(authorizationUrl)\n })\n\n app.get(logoutPath, async ctx => {\n // Remove auth cookie\n deleteCookie(ctx, 'pylon-auth')\n\n return ctx.redirect('/')\n })\n\n app.get(callbackPath, async ctx => {\n const openidConfig = ctx.get('auth').openidConfig\n\n const params = ctx.req.query()\n const code = params.code\n const state = params.state\n\n if (!code || !state) {\n throw new PylonAuthException(400, {\n message: 'Missing authorization code or state'\n })\n }\n\n const codeVerifier = getCookie(ctx, 'pylon_code_verifier')\n if (!codeVerifier) {\n throw new PylonAuthException(400, {\n message: 'Missing code verifier'\n })\n }\n\n try {\n const cbUrl = new URL(ctx.req.url)\n // Exchange the authorization code for tokens\n let tokenSet = await openid.authorizationCodeGrant(\n openidConfig,\n cbUrl,\n {\n pkceCodeVerifier: codeVerifier,\n expectedState: state\n },\n cbUrl.searchParams\n )\n\n // Store tokens in secure cookies\n setCookie(ctx, `pylon-auth`, tokenSet.access_token, {\n httpOnly: true,\n maxAge: tokenSet.expires_in || 3600 // Default to 1 hour if not specified\n })\n\n return ctx.redirect('/')\n } catch (error) {\n console.error('Error during token exchange:', error)\n\n return ctx.text('Authentication failed!', 500)\n }\n })\n }\n }\n}\n", "import * as crypto from 'crypto'\n\n/*\nConvert a string into an ArrayBuffer\nfrom https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n*/\nfunction str2ab(str) {\n const buf = new ArrayBuffer(str.length)\n const bufView = new Uint8Array(buf)\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i)\n }\n return buf\n}\n\nconst convertPKCS1ToPKCS8 = (pkcs1: string) => {\n // with cryto module\n\n const key = crypto.createPrivateKey(pkcs1)\n\n return key.export({\n type: 'pkcs8',\n format: 'pem'\n })\n}\n\n/*\nImport a PEM encoded RSA private key, to use for RSA-PSS signing.\nTakes a string containing the PEM encoded key, and returns a Promise\nthat will resolve to a CryptoKey representing the private key.\n*/\nfunction importPKCS8PrivateKey(pem) {\n // fetch the part of the PEM string between header and footer\n const pemHeader = '-----BEGIN PRIVATE KEY-----'\n const pemFooter = '-----END PRIVATE KEY-----'\n const pemContents = pem.substring(\n pemHeader.length,\n pem.length - pemFooter.length - 1\n )\n // base64 decode the string to get the binary data\n const binaryDerString = atob(pemContents)\n // convert from a binary string to an ArrayBuffer\n const binaryDer = str2ab(binaryDerString)\n\n return crypto.subtle.importKey(\n 'pkcs8',\n binaryDer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256'\n },\n true,\n ['sign']\n )\n}\n\nexport const importPrivateKey = async (pkcs1Pem: string) => {\n const pkcs8Pem = convertPKCS1ToPKCS8(pkcs1Pem)\n\n return await importPKCS8PrivateKey(pkcs8Pem)\n}\n", "import {MiddlewareHandler} from 'hono'\nimport {env} from 'hono/adapter'\nimport {HTTPException} from 'hono/http-exception'\nimport {ContentfulStatusCode} from 'hono/utils/http-status'\nimport {ServiceError} from '../../define-pylon'\nimport {Env, getContext} from '../../context'\nimport {createDecorator} from '../../create-decorator'\n\nexport type AuthRequireChecks = {\n roles?: string[]\n}\n\nexport const authMiddleware = (checks: AuthRequireChecks = {}) => {\n const middleware: MiddlewareHandler<Env> = async (ctx, next) => {\n const AUTH_PROJECT_ID = env(ctx).AUTH_PROJECT_ID\n\n // Check if user is authenticated\n const auth = ctx.get('auth')\n\n if (!auth) {\n throw new HTTPException(401, {\n message: 'Authentication required'\n })\n }\n\n if (checks.roles && auth.user) {\n const roles = auth.user.roles\n\n const hasRole = checks.roles.some(role => {\n return (\n roles.includes(role) || roles.includes(`${AUTH_PROJECT_ID}:${role}`)\n )\n })\n\n if (!hasRole) {\n const resError = new Response('Forbidden', {\n status: 403,\n statusText: 'Forbidden',\n headers: {\n 'Missing-Roles': checks.roles.join(','),\n 'Obtained-Roles': roles.join(',')\n }\n })\n\n throw new HTTPException(resError.status as ContentfulStatusCode, {\n res: resError\n })\n }\n }\n\n return next()\n }\n\n return middleware\n}\n\nexport function requireAuth(checks?: AuthRequireChecks) {\n const checkAuth = async (c: any) => {\n const ctx = await c\n\n try {\n await authMiddleware(checks)(ctx, async () => {})\n } catch (e) {\n if (e instanceof HTTPException) {\n if (e.status === 401) {\n throw new ServiceError(e.message, {\n statusCode: 401,\n code: 'AUTH_REQUIRED'\n })\n } else if (e.status === 403) {\n const res = e.getResponse()\n\n throw new ServiceError(res.statusText, {\n statusCode: res.status,\n code: 'AUTHORIZATION_REQUIRED',\n details: {\n missingRoles: res.headers.get('Missing-Roles')?.split(','),\n obtainedRoles: res.headers.get('Obtained-Roles')?.split(',')\n }\n })\n } else {\n throw e\n }\n }\n\n throw e\n }\n }\n\n return createDecorator(async () => {\n const ctx = getContext()\n\n await checkAuth(ctx)\n })\n}\n", "export function createDecorator(callback: (...args: any[]) => Promise<void>) {\n function MyDecorator<T extends (...args: any[]) => any>(\n target: Object,\n propertyKey: string | symbol\n ): void\n\n function MyDecorator<T>(fn: T): T\n\n function MyDecorator<T>(\n arg1: Object | T,\n propertyKey?: string | symbol,\n descriptor?: PropertyDescriptor\n ): any {\n if (descriptor) {\n const originalMethod = descriptor.value as T\n\n descriptor.value = async function (...args: any[]) {\n await callback(...args)\n return (originalMethod as any).apply(this, args)\n }\n\n return descriptor\n } else {\n if (!descriptor) {\n if (propertyKey === undefined) {\n const originalFunction = arg1 as T\n\n return async function (\n ...args: Parameters<any>\n ): Promise<ReturnType<any>> {\n await callback(...args)\n return (originalFunction as any)(...args)\n } as T\n }\n\n let value: any = arg1[propertyKey]\n Object.defineProperty(arg1, propertyKey, {\n get: function () {\n return async function (...args: Parameters<any>) {\n await callback(...args)\n if (typeof value === 'function') {\n return value(...args)\n }\n\n return value\n }\n },\n set: function (newValue) {\n value = newValue\n },\n enumerable: true,\n configurable: true\n })\n\n return\n }\n }\n }\n\n return MyDecorator\n}\n", "import {Hono, MiddlewareHandler} from 'hono'\nimport {logger} from 'hono/logger'\nimport {sentry} from '@hono/sentry'\nimport {except} from 'hono/combine'\n\nimport {asyncContext, Env} from '../context'\n\nexport const app = new Hono<Env>()\n\napp.use('*', sentry())\n\napp.use('*', async (c, next) => {\n return new Promise((resolve, reject) => {\n asyncContext.run(c, async () => {\n try {\n resolve(await next()) // You can pass the value you want to return here\n } catch (error) {\n reject(error) // If an error occurs during the execution of `next()`, reject the Promise\n }\n })\n })\n})\n\napp.use('*', except(['/__pylon/*'], logger()))\n\napp.use((c, next) => {\n // @ts-ignore\n c.req.id = crypto.randomUUID()\n return next()\n})\n\nexport const pluginsMiddleware: MiddlewareHandler[] = []\n\nconst pluginsMiddlewareLoader: MiddlewareHandler = async (c, next) => {\n for (const middleware of pluginsMiddleware) {\n const response = await middleware(c, async () => {})\n\n if (response) {\n return response\n }\n }\n\n return next()\n}\n\napp.use(pluginsMiddlewareLoader)\n", "import {createSchema, createYoga} from 'graphql-yoga'\nimport {GraphQLScalarType, Kind} from 'graphql'\nimport {\n DateTimeISOResolver,\n GraphQLVoid,\n JSONObjectResolver,\n JSONResolver\n} from 'graphql-scalars'\n\nimport {useSentry} from '../plugins/use-sentry'\nimport {Context} from '../context'\nimport {resolversToGraphQLResolvers} from '../define-pylon'\nimport {Plugin, PylonConfig} from '..'\nimport {readFileSync} from 'fs'\nimport path from 'path'\nimport {app, pluginsMiddleware} from '.'\nimport {useViewer} from '../plugins/use-viewer'\nimport {useUnhandledRoute} from '../plugins/use-unhandled-route'\nimport {useDisableIntrospection} from '@graphql-yoga/plugin-disable-introspection'\n\ninterface PylonHandlerOptions {\n graphql: {\n Query: Record<string, any>\n Mutation?: Record<string, any>\n Subscription?: Record<string, any>\n }\n config?: PylonConfig\n}\n\ntype MaybeLazyObject<T> = T | (() => T)\n\nconst resolveLazyObject = <T>(obj: MaybeLazyObject<T>): T => {\n return typeof obj === 'function' ? (obj as () => T)() : obj\n}\n\nconst loadPluginsMiddleware = async (plugins: Plugin[]) => {\n for (const plugin of plugins) {\n await plugin.setup?.(app)\n\n if (plugin.middleware) {\n pluginsMiddleware.push(plugin.middleware)\n }\n }\n}\n\nexport const executeConfig = async (config: PylonConfig) => {\n const plugins = [useSentry(), useViewer(), ...(config?.plugins || [])]\n\n if (config?.landingPage ?? true) {\n plugins.push(useUnhandledRoute())\n }\n\n if (config?.graphiql === false) {\n plugins.push(useDisableIntrospection() as Plugin)\n }\n\n await loadPluginsMiddleware(plugins)\n\n config.plugins = plugins\n\n // @ts-ignore\n app.config = config\n}\n\nexport const handler = (options: PylonHandlerOptions) => {\n let {\n typeDefs,\n resolvers,\n graphql: graphql$\n } = options as PylonHandlerOptions & {\n typeDefs?: string\n resolvers?: Record<string, any>\n }\n\n const graphql = resolveLazyObject(graphql$)\n\n // @ts-ignore\n const config = app.config as PylonConfig\n\n if (!typeDefs) {\n // Try to read the schema from the default location\n const schemaPath = path.join(process.cwd(), '.pylon', 'schema.graphql')\n\n // If `schemaPath` is provided, read the schema from the file\n if (schemaPath) {\n typeDefs = readFileSync(schemaPath, 'utf-8')\n }\n }\n\n if (!typeDefs) {\n throw new Error('No schema provided.')\n }\n\n if (!resolvers) {\n // Try to read the resolvers from the default location\n const resolversPath = path.join(process.cwd(), '.pylon', 'resolvers.js')\n\n // If `resolversPath` is provided, read the resolvers from the file\n\n if (resolversPath) {\n resolvers = require(resolversPath).resolvers\n }\n }\n\n const graphqlResolvers = resolversToGraphQLResolvers(graphql)\n\n const schema = createSchema<Context>({\n typeDefs,\n resolvers: {\n ...graphqlResolvers,\n ...resolvers,\n // Transforms a date object to a timestamp\n Date: DateTimeISOResolver,\n JSON: JSONResolver,\n Object: JSONObjectResolver,\n Void: GraphQLVoid,\n Number: new GraphQLScalarType({\n name: 'Number',\n description: 'Custom scalar that handles both integers and floats',\n\n // Parsing input from query variables\n parseValue(value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Value is not a number: ${value}`)\n }\n return value // Valid number\n },\n\n // Validation when sending from client (input literals)\n parseLiteral(ast) {\n if (ast.kind === Kind.INT || ast.kind === Kind.FLOAT) {\n return parseFloat(ast.value) // Convert the value to a float\n }\n throw new TypeError(\n `Value is not a valid number or float: ${\n 'value' in ast ? ast.value : ast\n }`\n )\n },\n\n // Serialize output to be sent to the client\n serialize(value) {\n if (typeof value !== 'number') {\n throw new TypeError(`Value is not a number: ${value}`)\n }\n return value\n }\n })\n }\n })\n\n const yoga = createYoga({\n graphqlEndpoint: '/graphql',\n ...config,\n landingPage: false,\n graphiql:\n config?.graphiql !== false\n ? req => {\n return {\n shouldPersistHeaders: true,\n title: 'Pylon Playground',\n defaultQuery: `# Welcome to the Pylon Playground!`\n }\n }\n : false,\n schema\n })\n\n const handler = async (c: Context): Promise<Response> => {\n let executionContext: Context['executionCtx'] | {} = {}\n\n try {\n executionContext = c.executionCtx\n } catch (e) {}\n\n const response = await yoga.fetch(c.req.raw, c.env, executionContext)\n\n if (response.status === 404) {\n return c.notFound()\n }\n\n return c.newResponse(response.body, response)\n }\n\n return handler\n}\n", "import {GraphQLError, Kind, OperationDefinitionNode, print} from 'graphql'\nimport {\n getDocumentString,\n handleStreamOrSingleExecutionResult,\n isOriginalGraphQLError,\n OnExecuteDoneHookResultOnNextHook,\n TypedExecutionArgs\n} from '@envelop/core'\nimport * as Sentry from '@sentry/node'\nimport type {Span, TraceparentData} from '@sentry/types'\nimport {Plugin} from '..'\n\nexport type SentryPluginOptions<PluginContext extends Record<string, any>> = {\n /**\n * Starts a new transaction for every GraphQL Operation.\n * When disabled, an already existing Transaction will be used.\n *\n * @default true\n */\n startTransaction?: boolean\n /**\n * Renames Transaction.\n * @default false\n */\n renameTransaction?: boolean\n /**\n * Adds result of each resolver and operation to Span's data (available under \"result\")\n * @default false\n */\n includeRawResult?: boolean\n /**\n * Adds operation's variables to a Scope (only in case of errors)\n * @default false\n */\n includeExecuteVariables?: boolean\n /**\n * The key of the event id in the error's extension. `null` to disable.\n * @default sentryEventId\n */\n eventIdKey?: string | null\n /**\n * Adds custom tags to every Transaction.\n */\n appendTags?: (\n args: TypedExecutionArgs<PluginContext>\n ) => Record<string, unknown>\n /**\n * Callback to set context information onto the scope.\n */\n configureScope?: (\n args: TypedExecutionArgs<PluginContext>,\n scope: Sentry.Scope\n ) => void\n /**\n * Produces a name of Transaction (only when \"renameTransaction\" or \"startTransaction\" are enabled) and description of created Span.\n *\n * @default operation's name or \"Anonymous Operation\" when missing)\n */\n transactionName?: (args: TypedExecutionArgs<PluginContext>) => string\n /**\n * Produces tracing data for Transaction\n *\n * @default is empty\n */\n traceparentData?: (\n args: TypedExecutionArgs<PluginContext>\n ) => TraceparentData | undefined\n /**\n * Produces a \"op\" (operation) of created Span.\n *\n * @default execute\n */\n operationName?: (args: TypedExecutionArgs<PluginContext>) => string\n /**\n * Indicates whether or not to skip the entire Sentry flow for given GraphQL operation.\n * By default, no operations are skipped.\n */\n skip?: (args: TypedExecutionArgs<PluginContext>) => boolean\n /**\n * Indicates whether or not to skip Sentry exception reporting for a given error.\n * By default, this plugin skips all `GraphQLError` errors and does not report it to Sentry.\n */\n skipError?: (args: Error) => boolean\n}\n\nexport const defaultSkipError = isOriginalGraphQLError\n\nexport const useSentry = <PluginContext extends Record<string, any> = {}>(\n options: SentryPluginOptions<PluginContext> = {}\n): Plugin<PluginContext> => {\n function pick<K extends keyof SentryPluginOptions<PluginContext>>(\n key: K,\n defaultValue: NonNullable<SentryPluginOptions<PluginContext>[K]>\n ) {\n return options[key] ?? defaultValue\n }\n\n const startTransaction = pick('startTransaction', true)\n const includeRawResult = pick('includeRawResult', false)\n const includeExecuteVariables = pick('includeExecuteVariables', false)\n const renameTransaction = pick('renameTransaction', false)\n const skipOperation = pick('skip', () => false)\n const skipError = pick('skipError', defaultSkipError)\n\n const eventIdKey = options.eventIdKey === null ? null : 'sentryEventId'\n\n function addEventId(err: GraphQLError, eventId: string | null): GraphQLError {\n if (eventIdKey !== null && eventId !== null) {\n err.extensions[eventIdKey] = eventId\n }\n\n return err\n }\n\n return {\n onExecute({args}) {\n if (skipOperation(args)) {\n return\n }\n\n const rootOperation = args.document.definitions.find(\n o => o.kind === Kind.OPERATION_DEFINITION\n ) as OperationDefinitionNode\n const operationType = rootOperation.operation\n\n const document = getDocumentString(args.document, print)\n\n const opName =\n args.operationName || rootOperation.name?.value || 'Anonymous Operation'\n const addedTags: Record<string, any> =\n (options.appendTags && options.appendTags(args)) || {}\n const traceparentData =\n (options.traceparentData && options.traceparentData(args)) || {}\n\n const transactionName = options.transactionName\n ? options.transactionName(args)\n : opName\n const op = options.operationName ? options.operationName(args) : 'execute'\n const tags = {\n operationName: opName,\n operation: operationType,\n ...addedTags\n }\n\n if (options.configureScope) {\n options.configureScope(args, Sentry.getCurrentScope())\n }\n\n return {\n onExecuteDone(payload) {\n const handleResult: OnExecuteDoneHookResultOnNextHook<{}> = ({\n result,\n setResult\n }) => {\n Sentry.startSpanManual(\n {\n op,\n name: opName,\n attributes: tags\n },\n span => {\n if (renameTransaction) {\n span.updateName(transactionName)\n }\n\n span.setAttribute('document', document)\n\n if (includeRawResult) {\n span.setAttribute('result', JSON.stringify(result))\n }\n\n if (result.errors && result.errors.length > 0) {\n Sentry.withScope(scope => {\n scope.setTransactionName(opName)\n scope.setTag('operation', operationType)\n scope.setTag('operationName', opName)\n scope.setExtra('document', document)\n\n scope.setTags(addedTags || {})\n\n if (includeRawResult) {\n scope.setExtra('result', result)\n }\n\n if (includeExecuteVariables) {\n scope.setExtra('variables', args.variableValues)\n }\n\n const errors = result.errors?.map(err => {\n if (skipError(err) === true) {\n return err\n }\n\n const errorPath = (err.path ?? [])\n .map((v: string | number) =>\n typeof v === 'number' ? '$index' : v\n )\n .join(' > ')\n\n if (errorPath) {\n scope.addBreadcrumb({\n category: 'execution-path',\n message: errorPath,\n level: 'debug'\n })\n }\n\n const eventId = Sentry.captureException(\n err.originalError,\n {\n fingerprint: [\n 'graphql',\n errorPath,\n opName,\n operationType\n ],\n contexts: {\n GraphQL: {\n operationName: opName,\n operationType,\n variables: args.variableValues\n }\n }\n }\n )\n\n return addEventId(err, eventId)\n })\n\n setResult({\n ...result,\n errors\n })\n })\n }\n\n span.end()\n }\n )\n }\n return handleStreamOrSingleExecutionResult(payload, handleResult)\n }\n }\n }\n }\n}\n", "import {html} from 'hono/html'\nimport {type Plugin} from '../index'\n\nexport function useViewer(): Plugin {\n return {\n setup: app => {\n app.get('/viewer', async c => {\n return c.html(\n await html`\n <!DOCTYPE html>\n <html>\n <head>\n <title>Pylon Viewer</title>\n <script src=\"https://cdn.jsdelivr.net/npm/react@16/umd/react.production.min.js\"></script>\n <script src=\"https://cdn.jsdelivr.net/npm/react-dom@16/umd/react-dom.production.min.js\"></script>\n\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.jsdelivr.net/npm/graphql-voyager/dist/voyager.css\"\n />\n <style>\n body {\n padding: 0;\n margin: 0;\n width: 100%;\n height: 100vh;\n overflow: hidden;\n }\n\n #voyager {\n height: 100%;\n position: relative;\n }\n }\n </style>\n <script src=\"https://cdn.jsdelivr.net/npm/graphql-voyager/dist/voyager.min.js\"></script>\n </head>\n <body>\n <div id=\"voyager\">Loading...</div>\n <script>\n function introspectionProvider(introspectionQuery) {\n // ... do a call to server using introspectionQuery provided\n // or just return pre-fetched introspection\n\n // Endpoint is current path instead of root/graphql\n const endpoint = window.location.pathname.replace(\n '/viewer',\n '/graphql'\n )\n\n return fetch(endpoint, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({query: introspectionQuery})\n }).then(response => response.json())\n }\n\n // Render <Voyager />\n GraphQLVoyager.init(document.getElementById('voyager'), {\n introspection: introspectionProvider\n })\n </script>\n </body>\n </html>\n `\n )\n })\n }\n }\n}\n", "import {html} from 'hono/html'\nimport {type Plugin} from '../index'\nimport {version} from '../../package.json'\n\nexport function useUnhandledRoute(): Plugin {\n return {\n setup: app => {\n app.notFound(c => {\n return c.html(\n html`<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\" />\n<title>Welcome to Pylon</title>\n<link\nrel=\"icon\"\nhref=\"https://pylon.cronit.io/favicon/favicon.ico\"\n/>\n<style>\nbody,\nhtml {\npadding: 0;\nmargin: 0;\nheight: 100%;\nfont-family:\n 'Inter',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n 'Roboto',\n 'Oxygen',\n 'Ubuntu',\n 'Cantarell',\n 'Fira Sans',\n 'Droid Sans',\n 'Helvetica Neue',\n sans-serif;\ncolor: white;\nbackground-color: black;\n}\n\nmain > section.hero {\ndisplay: flex;\nheight: 90vh;\njustify-content: center;\nalign-items: center;\nflex-direction: column;\n}\n\n.logo {\ndisplay: flex;\nalign-items: center;\n}\n\n.logo-svg {\nwidth: 100%\n}\n\n.buttons {\nmargin-top: 24px;\n}\n\nh1 {\nfont-size: 80px;\n}\n\nh2 {\ncolor: #888;\nmax-width: 50%;\nmargin-top: 0;\ntext-align: center;\n}\n\na {\ncolor: #fff;\ntext-decoration: none;\nmargin-left: 10px;\nmargin-right: 10px;\nfont-weight: bold;\ntransition: color 0.3s ease;\npadding: 4px;\noverflow: visible;\n}\n\na.graphiql:hover {\ncolor: rgba(255, 0, 255, 0.7);\n}\na.docs:hover {\ncolor: rgba(28, 200, 238, 0.7);\n}\na.tutorial:hover {\ncolor: rgba(125, 85, 245, 0.7);\n}\nsvg {\nmargin-right: 24px;\n}\n\n.not-what-your-looking-for {\nmargin-top: 5vh;\n}\n\n.not-what-your-looking-for > * {\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.not-what-your-looking-for > p {\ntext-align: center;\n}\n\n.not-what-your-looking-for > h2 {\ncolor: #464646;\n}\n\n.not-what-your-looking-for > p {\nmax-width: 600px;\nline-height: 1.3em;\n}\n\n.not-what-your-looking-for > pre {\nmax-width: 300px;\n}\n</style>\n</head>\n<body id=\"body\">\n<main>\n<section class=\"hero\">\n<div class=\"logo\">\n <div>\n <svg class=\"logo-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" zoomAndPan=\"magnify\" viewBox=\"0 0 286.5 121.500001\" preserveAspectRatio=\"xMidYMid meet\" version=\"1.0\"><defs><g></g><clipPath id=\"38f6fcde47\"><path d=\"M 0.339844 42 L 10 42 L 10 79 L 0.339844 79 Z M 0.339844 42 \" clip-rule=\"nonzero\"></path></clipPath><clipPath id=\"af000f7256\"><path d=\"M 64 23.925781 L 72.789062 23.925781 L 72.789062 96.378906 L 64 96.378906 Z M 64 23.925781 \" clip-rule=\"nonzero\"></path></clipPath></defs><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(107.11969, 78.49768)\"><g><path d=\"M 10.078125 -25.046875 C 11.109375 -26.398438 12.507812 -27.535156 14.28125 -28.453125 C 16.0625 -29.378906 18.070312 -29.84375 20.3125 -29.84375 C 22.863281 -29.84375 25.195312 -29.210938 27.3125 -27.953125 C 29.425781 -26.691406 31.085938 -24.921875 32.296875 -22.640625 C 33.503906 -20.367188 34.109375 -17.757812 34.109375 -14.8125 C 34.109375 -11.863281 33.503906 -9.222656 32.296875 -6.890625 C 31.085938 -4.566406 29.425781 -2.753906 27.3125 -1.453125 C 25.195312 -0.160156 22.863281 0.484375 20.3125 0.484375 C 18.070312 0.484375 16.078125 0.03125 14.328125 -0.875 C 12.585938 -1.78125 11.171875 -2.910156 10.078125 -4.265625 L 10.078125 13.96875 L 4 13.96875 L 4 -29.359375 L 10.078125 -29.359375 Z M 27.921875 -14.8125 C 27.921875 -16.84375 27.503906 -18.59375 26.671875 -20.0625 C 25.835938 -21.539062 24.734375 -22.660156 23.359375 -23.421875 C 21.992188 -24.179688 20.53125 -24.5625 18.96875 -24.5625 C 17.445312 -24.5625 16 -24.171875 14.625 -23.390625 C 13.257812 -22.609375 12.160156 -21.472656 11.328125 -19.984375 C 10.492188 -18.492188 10.078125 -16.734375 10.078125 -14.703125 C 10.078125 -12.679688 10.492188 -10.914062 11.328125 -9.40625 C 12.160156 -7.894531 13.257812 -6.75 14.625 -5.96875 C 16 -5.1875 17.445312 -4.796875 18.96875 -4.796875 C 20.53125 -4.796875 21.992188 -5.191406 23.359375 -5.984375 C 24.734375 -6.785156 25.835938 -7.953125 26.671875 -9.484375 C 27.503906 -11.015625 27.921875 -12.789062 27.921875 -14.8125 Z M 27.921875 -14.8125 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(143.259256, 78.49768)\"><g><path d=\"M 30.4375 -29.359375 L 12.421875 13.796875 L 6.125 13.796875 L 12.09375 -0.484375 L 0.53125 -29.359375 L 7.296875 -29.359375 L 15.5625 -6.984375 L 24.140625 -29.359375 Z M 30.4375 -29.359375 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(174.281707, 78.49768)\"><g><path d=\"M 10.078125 -39.4375 L 10.078125 0 L 4 0 L 4 -39.4375 Z M 10.078125 -39.4375 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(188.353752, 78.49768)\"><g><path d=\"M 16.734375 0.484375 C 13.960938 0.484375 11.457031 -0.144531 9.21875 -1.40625 C 6.976562 -2.664062 5.21875 -4.441406 3.9375 -6.734375 C 2.664062 -9.035156 2.03125 -11.691406 2.03125 -14.703125 C 2.03125 -17.691406 2.6875 -20.335938 4 -22.640625 C 5.3125 -24.953125 7.101562 -26.726562 9.375 -27.96875 C 11.65625 -29.21875 14.195312 -29.84375 17 -29.84375 C 19.8125 -29.84375 22.351562 -29.21875 24.625 -27.96875 C 26.894531 -26.726562 28.6875 -24.953125 30 -22.640625 C 31.320312 -20.335938 31.984375 -17.691406 31.984375 -14.703125 C 31.984375 -11.722656 31.304688 -9.078125 29.953125 -6.765625 C 28.597656 -4.453125 26.757812 -2.664062 24.4375 -1.40625 C 22.113281 -0.144531 19.546875 0.484375 16.734375 0.484375 Z M 16.734375 -4.796875 C 18.296875 -4.796875 19.757812 -5.164062 21.125 -5.90625 C 22.5 -6.65625 23.613281 -7.773438 24.46875 -9.265625 C 25.320312 -10.765625 25.75 -12.578125 25.75 -14.703125 C 25.75 -16.835938 25.335938 -18.640625 24.515625 -20.109375 C 23.703125 -21.585938 22.617188 -22.695312 21.265625 -23.4375 C 19.910156 -24.1875 18.453125 -24.5625 16.890625 -24.5625 C 15.328125 -24.5625 13.878906 -24.1875 12.546875 -23.4375 C 11.210938 -22.695312 10.15625 -21.585938 9.375 -20.109375 C 8.59375 -18.640625 8.203125 -16.835938 8.203125 -14.703125 C 8.203125 -11.546875 9.007812 -9.101562 10.625 -7.375 C 12.25 -5.65625 14.285156 -4.796875 16.734375 -4.796875 Z M 16.734375 -4.796875 \"></path></g></g></g><g fill=\"currentColor\" fill-opacity=\"1\"><g transform=\"translate(222.361196, 78.49768)\"><g><path d=\"M 18.8125 -29.84375 C 21.125 -29.84375 23.191406 -29.363281 25.015625 -28.40625 C 26.847656 -27.445312 28.28125 -26.023438 29.3125 -24.140625 C 30.34375 -22.253906 30.859375 -19.984375 30.859375 -17.328125 L 30.859375 0 L 24.84375 0 L 24.84375 -16.421875 C 24.84375 -19.046875 24.179688 -21.054688 22.859375 -22.453125 C 21.546875 -23.859375 19.753906 -24.5625 17.484375 -24.5625 C 15.210938 -24.5625 13.410156 -23.859375 12.078125 -22.453125 C 10.742188 -21.054688 10.078125 -19.046875 10.078125 -16.421875 L 10.078125 0 L 4 0 L 4 -29.359375 L 10.078125 -29.359375 L 10.078125 -26.015625 C 11.066406 -27.222656 12.332031 -28.160156 13.875 -28.828125 C 15.425781 -29.503906 17.070312 -29.84375 18.8125 -29.84375 Z M 18.8125 -29.84375 \"></path></g></g></g><path fill=\"currentColor\" d=\"M 53.359375 31.652344 L 53.359375 88.6875 L 62.410156 90.859375 L 62.410156 29.484375 Z M 53.359375 31.652344 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><g clip-path=\"url(#38f6fcde47)\"><path fill=\"currentColor\" d=\"M 0.339844 47.433594 L 0.339844 72.910156 C 0.339844 73.34375 0.410156 73.769531 0.554688 74.179688 C 0.699219 74.59375 0.90625 74.96875 1.175781 75.3125 C 1.445312 75.65625 1.765625 75.945312 2.132812 76.179688 C 2.503906 76.414062 2.898438 76.582031 3.324219 76.683594 L 9.390625 78.140625 L 9.390625 42.195312 L 3.3125 43.660156 C 2.890625 43.761719 2.492188 43.929688 2.125 44.164062 C 1.761719 44.402344 1.441406 44.6875 1.171875 45.03125 C 0.902344 45.375 0.695312 45.75 0.554688 46.164062 C 0.410156 46.574219 0.339844 46.996094 0.339844 47.433594 Z M 0.339844 47.433594 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></g><g clip-path=\"url(#af000f7256)\"><path fill=\"currentColor\" d=\"M 64.996094 95.085938 L 64.996094 25.253906 C 64.996094 25.082031 65.027344 24.917969 65.09375 24.761719 C 65.160156 24.601562 65.253906 24.460938 65.375 24.339844 C 65.496094 24.21875 65.636719 24.125 65.792969 24.0625 C 65.953125 23.996094 66.117188 23.960938 66.289062 23.960938 L 71.460938 23.960938 C 71.632812 23.960938 71.796875 23.996094 71.957031 24.0625 C 72.113281 24.125 72.253906 24.21875 72.375 24.339844 C 72.496094 24.460938 72.589844 24.601562 72.65625 24.761719 C 72.722656 24.917969 72.753906 25.082031 72.753906 25.253906 L 72.753906 95.085938 C 72.753906 95.257812 72.722656 95.421875 72.65625 95.582031 C 72.589844 95.738281 72.496094 95.878906 72.375 96 C 72.253906 96.121094 72.113281 96.214844 71.957031 96.28125 C 71.796875 96.347656 71.632812 96.378906 71.460938 96.378906 L 66.289062 96.378906 C 66.117188 96.378906 65.953125 96.347656 65.792969 96.28125 C 65.636719 96.214844 65.496094 96.121094 65.375 96 C 65.253906 95.878906 65.160156 95.738281 65.09375 95.582031 C 65.027344 95.421875 64.996094 95.257812 64.996094 95.085938 Z M 64.996094 95.085938 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></g><path fill=\"currentColor\" d=\"M 22.320312 81.238281 L 22.320312 39.101562 L 11.976562 41.585938 L 11.976562 78.757812 Z M 22.320312 81.238281 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><path fill=\"currentColor\" d=\"M 50.769531 88.066406 L 50.769531 32.277344 L 37.839844 35.378906 L 37.839844 84.960938 Z M 50.769531 88.066406 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path><path fill=\"currentColor\" d=\"M 24.90625 81.863281 L 35.253906 84.34375 L 35.253906 35.996094 L 24.90625 38.480469 Z M 24.90625 81.863281 \" fill-opacity=\"1\" fill-rule=\"nonzero\"></path></svg>\n </div>\n <p>Version: ${version}</p>\n</div>\n<h2>Enables TypeScript developers to easily build GraphQL APIs</h2>\n<div class=\"buttons\">\n <a href=\"https://pylon.cronit.io/docs\" class=\"docs\"\n >Read the Docs</add\n >\n <a href=\"/graphql\" class=\"graphiql\">Visit GraphiQL</a>\n <a href=\"/viewer\" class=\"graphiql\">Visit Viewer</a>\n</div>\n</section>\n<section class=\"not-what-your-looking-for\">\n<h2>Not the page you are looking for? \uD83D\uDC40</h2>\n<p>\n This page is shown be default whenever a 404 is hit.<br />You can disable this by behavior\n via the <code>landingPage</code> option in the Pylon config. Edit the <code>src/index.ts</code> file\n and add the following code:\n</p>\n<pre>\n <code>\nexport const config: PylonConfig = {\n landingPage: false\n}\n </code>\n</pre>\n\n<p>\n When you define a route, this page will no longer be shown. For example, the following code\nwill show a \"Hello, world!\" message at the root of your app:\n</p>\n<pre>\n <code>\nimport {app} from '@getcronit/pylon'\n\napp.get(\"/\", c => {\n return c.text(\"Hello, world!\")\n})\n </code>\n</pre>\n</section>\n</main>\n</body>\n</html>`,\n 404\n )\n })\n }\n }\n}\n", "{\n \"name\": \"@getcronit/pylon\",\n \"version\": \"3.0.0-canary-20250408153816.a853ef59ecad170f4f07500b4a93bfb2b6299b54\",\n \"type\": \"module\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./pages\": {\n \"import\": \"./dist/pages/index.js\",\n \"types\": \"./dist/pages/index.d.ts\"\n },\n \"./pages/index.css\": {\n \"import\": \"./dist/pages/index.css\"\n },\n \"./tsconfig.pylon.json\": \"./tsconfig.pylon.json\"\n },\n \"scripts\": {\n \"build\": \"rimraf ./dist && node build.js && pnpm run build:declarations\",\n \"build:declarations\": \"tsc --declaration --emitDeclarationOnly --outDir ./dist && tsc-alias\"\n },\n \"files\": [\n \"dist\",\n \"tsconfig.pylon.json\"\n ],\n \"author\": \"Nico Schett <nico.schett@cronit.io>\",\n \"license\": \"Apache-2.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/getcronit/pylon.git\",\n \"directory\": \"packages/pylon\"\n },\n \"homepage\": \"https://pylon.cronit.io\",\n \"dependencies\": {\n \"@envelop/core\": \"^5.0.3\",\n \"@gqty/react\": \"^3.1.0\",\n \"@graphql-yoga/plugin-disable-introspection\": \"^2.13.0\",\n \"@hono/sentry\": \"^1.2.0\",\n \"@radix-ui/react-collapsible\": \"^1.1.3\",\n \"@radix-ui/react-slot\": \"^1.1.2\",\n \"@sentry/bun\": \"^8.17.0\",\n \"@sentry/node\": \"^8.54.0\",\n \"chokidar\": \"^4.0.3\",\n \"class-variance-authority\": \"^0.7.1\",\n \"clsx\": \"^2.1.1\",\n \"consola\": \"^3.2.3\",\n \"gqty\": \"3.4.0-canary-20250207102900.644ad9fdeafa6318516627577b1d4d754d5c5a98\",\n \"graphql\": \"^16.9.0\",\n \"graphql-scalars\": \"^1.24.0\",\n \"graphql-yoga\": \"^5.6.2\",\n \"hono\": \"^4.0.8\",\n \"jsonwebtoken\": \"^9.0.2\",\n \"lucide-react\": \"^0.474.0\",\n \"mime\": \"^4.0.6\",\n \"openid-client\": \"^6.1.7\",\n \"postcss-load-config\": \"^6.0.1\",\n \"react-router\": \"^7.1.5\",\n \"sharp\": \"^0.33.5\",\n \"tailwind-merge\": \"^3.0.1\",\n \"tiny-glob\": \"^0.2.9\",\n \"toucan-js\": \"^4.1.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"devDependencies\": {\n \"@sentry/types\": \"^8.54.0\",\n \"@tailwindcss/postcss\": \"^4.0.6\",\n \"@types/react\": \"^19.0.8\",\n \"@types/react-dom\": \"^19.0.4\",\n \"tailwindcss\": \"^4.0.4\",\n \"tailwindcss-animate\": \"^1.0.7\",\n \"tsc-alias\": \"^1.8.11\"\n },\n \"peerDependencies\": {\n \"@tailwindcss/postcss\": \"^4.0.4\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.5.1\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n },\n \"react-dom\": {\n \"optional\": true\n },\n \"@tailwindcss/postcss\": {\n \"optional\": true\n },\n \"autoprefixer\": {\n \"optional\": true\n }\n }\n}\n", "import {asyncContext, Context} from './context'\n\nexport function getEnv() {\n const start = Date.now()\n const skipTracing = arguments[0] === true\n\n try {\n const context = asyncContext.getStore() as Context\n\n // Fall back to process.env or an empty object if no context is available\n // This is useful for testing\n // ref: https://hono.dev/docs/guides/testing#env\n const ctx = context.env || process.env || {}\n\n ctx.NODE_ENV = ctx.NODE_ENV || process.env.NODE_ENV || 'development'\n\n return ctx\n } catch {\n return process.env\n } finally {\n if (!skipTracing) {\n }\n }\n}\n", "import {Env} from './context.js'\n\nexport {ServiceError} from './define-pylon.js'\nexport {useAuth, requireAuth, authMiddleware} from './plugins/use-auth/index.js'\nexport {\n Context,\n Env,\n Variables,\n Bindings,\n asyncContext,\n getContext,\n setContext\n} from './context.js'\nimport {app as pylonApp} from './app/index.js'\nexport {pylonApp as app}\nexport {handler, executeConfig} from './app/pylon-handler.js'\nexport {getEnv} from './get-env.js'\nexport {createDecorator} from './create-decorator.js'\nexport {createPubSub as experimentalCreatePubSub} from 'graphql-yoga'\n\nexport {usePages} from './plugins/use-pages'\n\nimport type {Plugin as YogaPlugin} from 'graphql-yoga'\nimport {MiddlewareHandler} from 'hono'\nimport {BuildContext, BuildOptions} from 'esbuild'\n\nexport type Plugin<\n PluginContext extends Record<string, any> = {},\n TServerContext extends Record<string, any> = {},\n TUserContext = {}\n> = YogaPlugin<PluginContext, TServerContext, TUserContext> & {\n middleware?: MiddlewareHandler<Env>\n setup?: (app: typeof pylonApp) => Promise<void> | void\n build?: <T extends BuildOptions>(args: {\n onBuild: () => void\n }) => Promise<Omit<BuildContext<T>, 'serve'>>\n}\n\nexport type PylonConfig = {\n landingPage?: boolean\n graphiql?: boolean\n plugins?: Plugin[]\n}\n\nexport type ID = string & {readonly brand?: unique symbol}\nexport type Int = number & {readonly brand?: unique symbol}\nexport type Float = number & {readonly brand?: unique symbol}\n", "import fs from 'fs'\nimport path from 'path'\nimport reactServer from 'react-dom/server'\n\nimport {Env, getEnv, type Plugin} from '@/index'\nimport {UseHydrateCacheOptions} from '@gqty/react'\nimport {trimTrailingSlash} from 'hono/trailing-slash'\nimport {\n createStaticHandler,\n createStaticRouter,\n StaticRouter,\n StaticRouterProvider\n} from 'react-router'\nimport {PassThrough, Readable} from 'stream'\nimport mime from 'mime/lite'\n\nimport ErrorPage from '@/components/global-error-page'\nimport {MiddlewareHandler} from 'hono'\nimport {tmpdir} from 'os'\nimport {pipeline} from 'stream/promises'\n\nexport interface PageData {}\n\nexport type PageProps = {\n data: PageData\n params: Record<string, string>\n searchParams: Record<string, string>\n path: string\n}\n\nconst disableCacheMiddleware: MiddlewareHandler<Env> = async (c, next) => {\n const env = getEnv()\n // Disable cache for all request for now\n // This is a temporary solution before we implement a proper cache control\n if (true || env.NODE_ENV === 'development') {\n c.header(\n 'Cache-Control',\n 'no-store, no-cache, must-revalidate, proxy-revalidate'\n )\n c.header('Pragma', 'no-cache')\n c.header('Expires', '0')\n c.header('Surrogate-Control', 'no-store')\n }\n\n return next()\n}\n\nexport const setup: Plugin['setup'] = async app => {\n const cacheBustingSuffix = `?v=${Date.now()}`\n\n const slugs = (await import(`${process.cwd()}/.pylon/slugs.js`)).default\n const routes = (await import(`${process.cwd()}/.pylon/__pylon/pages/app.js`))\n .default\n const client = await import(`${process.cwd()}/.pylon/client/index.js`)\n\n let handler = createStaticHandler(routes)\n\n app.use(trimTrailingSlash() as any)\n\n app.get('/test1234', async c => {\n return c.json({hello: 'world'})\n })\n\n app.on('GET', slugs, disableCacheMiddleware as any, async c => {\n const context = await handler.query(c.req.raw)\n\n if (context instanceof Response) {\n return context\n }\n\n const router = createStaticRouter(handler.dataRoutes, context)\n\n const component = (\n <__PYLON_INTERNALS_DO_NOT_USE.DataClientProvider client={client}>\n <StaticRouterProvider router={router} context={context} />\n </__PYLON_INTERNALS_DO_NOT_USE.DataClientProvider>\n )\n\n // Check if the request wants JSON, if so, prepare the data\n if (c.req.header('accept')?.includes('application/json')) {\n const prepared = await client.prepareReactRender(component)\n\n const data = prepared.cacheSnapshot\n\n return c.json(data)\n }\n\n try {\n let cacheSnapshot: UseHydrateCacheOptions | undefined = undefined\n\n try {\n const prepared = await client.prepareReactRender(<></>)\n\n cacheSnapshot = prepared.cacheSnapshot\n } catch (error) {}\n\n if (reactServer.renderToReadableStream) {\n try {\n const stream = await reactServer.renderToReadableStream(component, {\n bootstrapModules: ['/__pylon/static/app.js' + cacheBustingSuffix]\n })\n\n return c.body(stream)\n } catch (error) {\n throw error\n }\n } else if (reactServer.renderToPipeableStream) {\n return await new Promise<Response>((resolve, reject) => {\n const {pipe} = reactServer.renderToPipeableStream(\n component,\n\n {\n bootstrapModules: ['/__pylon/static/app.js' + cacheBustingSuffix],\n onShellReady: async () => {\n c.header('Content-Type', 'text/html')\n\n const passThrough = new PassThrough()\n\n pipe(passThrough)\n\n resolve(c.body(Readable.toWeb(passThrough) as any))\n },\n onShellError: async error => {\n reject(error)\n }\n }\n )\n })\n } else {\n throw new Error('Environment not supported')\n }\n } catch (error) {\n c.header('Content-Type', 'text/html')\n c.status(500)\n\n return c.html(\n reactServer.renderToString(<ErrorPage error={error as any} />)\n )\n }\n })\n\n const publicFilesPath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public'\n )\n let publicFiles: string[] = []\n\n try {\n publicFiles = glob(`**/*`, {\n filesOnly: true,\n cwd: publicFilesPath\n })\n } catch (error) {\n // Ignore error\n }\n\n app.on(\n 'GET',\n publicFiles.map(file => `/${file}`),\n disableCacheMiddleware as any,\n async c => {\n const publicFilePath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public',\n c.req.path.replace('/', '')\n )\n\n return serveFilePath({filePath: publicFilePath, context: c})\n }\n )\n\n app.get('/__pylon/static/*', disableCacheMiddleware as any, async c => {\n const filePath = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'static',\n c.req.path.replace('/__pylon/static/', '')\n )\n\n return serveFilePath({filePath, context: c})\n })\n\n // Image optimization route\n app.get('/__pylon/image', async c => {\n try {\n const {\n src,\n w,\n h,\n q = '75',\n format = 'webp',\n lqip = 'false'\n } = c.req.query()\n\n if (!src) {\n return c.json({error: 'Missing parameters.'}, 400)\n }\n\n const isSrcAbsolute =\n src.startsWith('http://') || src.startsWith('https://')\n\n let imagePath: string\n\n if (isSrcAbsolute) {\n imagePath = await downloadImage(src)\n } else {\n if (!src.startsWith('/')) {\n return c.json({error: 'Invalid image path.'}, 400)\n }\n\n if (!src.startsWith('/__pylon/static/media')) {\n // Prefix it with the public directory\n imagePath = path.join(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public',\n src\n )\n } else {\n imagePath = path.join(process.cwd(), '.pylon', src)\n }\n }\n\n // Check cache first\n const cachedImageFileName = getCachedImagePath({\n src,\n width: w ? parseInt(w) : 0,\n height: h ? parseInt(h) : 0,\n quality: q,\n lqip: lqip === 'true',\n format: format as keyof FormatEnum\n })\n\n // Check if the image exists asynchronously\n try {\n await fs.promises.access(imagePath)\n } catch {\n return c.json({error: 'Image not found'}, 404)\n }\n\n if (IS_IMAGE_CACHE_POSSIBLE) {\n try {\n await fs.promises.access(cachedImageFileName)\n const stream = fs.createReadStream(cachedImageFileName)\n c.res.headers.set('Content-Type', getContentType(format))\n return c.body(Readable.toWeb(stream) as ReadableStream)\n } catch (e) {\n // Proceed to optimize and cache the image if it doesn't exist\n }\n }\n\n const sharp = (await import('sharp')).default\n\n // Get image metadata (width and height) to calculate aspect ratio\n const metadata = await sharp(imagePath).metadata()\n\n // Validate if the metadata contains width and height\n if (!metadata.width || !metadata.height) {\n return c.json(\n {\n error:\n 'Invalid image metadata. Width and height are required for resizing.'\n },\n 400\n )\n }\n\n // Calculate missing dimension\n const {width: finalWidth, height: finalHeight} = calculateDimensions(\n metadata.width,\n metadata.height,\n w ? parseInt(w) : undefined,\n h ? parseInt(h) : undefined\n )\n\n let imageFormat = format.toLowerCase()\n\n function isSupportedFormat(format: string): format is keyof FormatEnum {\n const supportedFormats = sharp.format\n return Object.keys(supportedFormats).includes(format)\n }\n\n if (!isSupportedFormat(imageFormat)) {\n throw new Error('Unsupported image format')\n }\n\n const quality = parseInt(q)\n\n let data = sharp(imagePath)\n\n if (lqip === 'true') {\n data = data\n .resize({\n width: Math.min(finalWidth ?? 16, 16),\n height: Math.min(finalHeight ?? 16, 16),\n fit: 'inside'\n })\n .toFormat('webp', {\n quality: 30,\n alphaQuality: 20,\n smartSubsample: true\n })\n } else {\n data = data.resize(finalWidth, finalHeight).toFormat(imageFormat, {\n quality\n })\n }\n\n if (IS_IMAGE_CACHE_POSSIBLE) {\n const image = await data.toFile(cachedImageFileName)\n c.res.headers.set('Content-Type', getContentType(image.format))\n\n return c.body(\n Readable.toWeb(\n fs.createReadStream(cachedImageFileName)\n ) as unknown as ReadableStream\n )\n } else {\n const image = await data.toBuffer({resolveWithObject: true})\n c.res.headers.set('Content-Type', getContentType(image.info.format))\n\n return c.body(image.data as any)\n }\n } catch (error) {\n console.error('Error processing the image:', error)\n return c.json({error: 'Error processing the image'}, 500)\n }\n })\n}\n\nimport {createHash} from 'crypto'\nimport type {FormatEnum} from 'sharp'\nimport glob from 'tiny-glob/sync.js'\nimport {serveFilePath} from './serve-file-path'\nimport {__PYLON_INTERNALS_DO_NOT_USE} from '@getcronit/pylon/pages'\n\n// Cache directory\n\nconst IMAGE_CACHE_DIR = path.join(process.cwd(), '.cache/__pylon/images')\n\nlet IS_IMAGE_CACHE_POSSIBLE = true\n\n// Ensure the cache directory exists (if creating files is allowed)\ntry {\n await fs.promises.mkdir(IMAGE_CACHE_DIR, {recursive: true})\n} catch (error) {\n IS_IMAGE_CACHE_POSSIBLE = false\n}\n\n// Helper function to generate the cached image path\nconst getCachedImagePath = (args: {\n src: string\n width: number\n height: number\n quality: string\n lqip: boolean\n format: keyof FormatEnum\n}) => {\n const fileName = `${path.basename(\n createHash('md5').update(JSON.stringify(args)).digest('hex'),\n path.extname(args.src)\n )}-${args.width}x${args.height}.${args.format}`\n return path.join(IMAGE_CACHE_DIR, fileName)\n}\n\nconst getValuesFromCachedImagePath = (cachedImagePath: string) => {\n const fileName = path.basename(cachedImagePath)\n const [hash, dimensions, format] = fileName.split('.')\n const [width, height] = dimensions.split('x').map(Number)\n return {hash, width, height, format}\n}\n\n// Utility function to calculate missing dimension based on aspect ratio\nconst calculateDimensions = (\n originalWidth: number,\n originalHeight: number,\n width?: number,\n height?: number\n) => {\n if (!width && !height) {\n return {width: originalWidth, height: originalHeight}\n }\n if (width && !height) {\n // Calculate height based on the aspect ratio\n height = Math.round((width * originalHeight) / originalWidth)\n } else if (height && !width) {\n // Calculate width based on the aspect ratio\n width = Math.round((height * originalWidth) / originalHeight)\n }\n return {width, height}\n}\n\n// Helper function to get the correct Content-Type based on the format\nconst getContentType = (format: string) => {\n switch (format.toLowerCase()) {\n case 'webp':\n return 'image/webp'\n case 'jpeg':\n case 'jpg':\n return 'image/jpeg'\n case 'png':\n return 'image/png'\n case 'gif':\n return 'image/gif'\n case 'svg':\n return 'image/svg+xml'\n default:\n return 'application/octet-stream' // Fallback type if format is unknown\n }\n}\n\nconst downloadImage = async (url: string): Promise<string> => {\n const response = await fetch(url)\n if (!response.ok)\n throw new Error(`Failed to download image: ${response.statusText}`)\n\n const ext = path.extname(new URL(url).pathname) || '.jpg'\n const tempFilePath = path.join(tmpdir(), `image-${Date.now()}${ext}`)\n\n const fileStream = fs.createWriteStream(tempFilePath)\n\n await pipeline(response.body!, fileStream)\n\n return tempFilePath\n}\n", "import {useEffect} from 'react'\nimport Logo from '@/components/logo'\nimport {Button} from '@/components/ui/button'\n\ninterface GlobalErrorProps {\n error: Error & {digest?: string}\n}\n\nexport default function GlobalError({error, ...rest}: GlobalErrorProps) {\n useEffect(() => {\n // Log the error to an error reporting service\n console.error('Global error:', error)\n }, [error])\n\n const reset = () => {\n window.location.reload()\n }\n\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"stylesheet\"\n href=\"/__pylon/static/pylon.css\"\n precedence=\"high\"\n />\n </head>\n <body>\n <div className=\"fixed inset-0 bg-black/90 z-50 overflow-y-auto p-4 flex items-center justify-center\">\n <div className=\"w-full max-w-3xl bg-black border border-red-600 rounded-lg overflow-hidden text-white font-sans\">\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-neutral-800 p-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-shrink-0\">\n <Logo className=\"h-8 w-auto text-white\" />\n </div>\n <div>\n <h1 className=\"text-xl font-medium text-red-500\">\n Application Crashed\n </h1>\n </div>\n </div>\n </div>\n\n {/* Error Message */}\n <div className=\"p-4\">\n <div className=\"mb-4 text-neutral-400\">\n The application encountered a critical error and could not\n continue.\n </div>\n\n <h2 className=\"text-2xl font-bold mb-4 text-white\">\n {error.message || 'A critical error occurred'}\n </h2>\n\n {error.digest && (\n <div className=\"mb-4\">\n <h3 className=\"text-sm uppercase tracking-wider text-neutral-500 font-medium mb-2\">\n Error ID\n </h3>\n <div className=\"bg-neutral-900 rounded-md p-3 text-neutral-300 font-mono\">\n {error.digest}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </body>\n </html>\n )\n}\n", "import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n", "import {cn} from '@/lib/utils'\n\nconst Logo: React.FC<{className?: string}> = props => {\n return (\n <svg\n className={cn('h-12 w-auto', props.className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n zoomAndPan=\"magnify\"\n viewBox=\"0 0 286.5 121.500001\"\n preserveAspectRatio=\"xMidYMid meet\"\n version=\"1.0\">\n <defs>\n <g />\n <clipPath id=\"38f6fcde47\">\n <path\n d=\"M 0.339844 42 L 10 42 L 10 79 L 0.339844 79 Z M 0.339844 42 \"\n clipRule=\"nonzero\"\n />\n </clipPath>\n <clipPath id=\"af000f7256\">\n <path\n d=\"M 64 23.925781 L 72.789062 23.925781 L 72.789062 96.378906 L 64 96.378906 Z M 64 23.925781 \"\n clipRule=\"nonzero\"\n />\n </clipPath>\n </defs>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(107.11969, 78.49768)\">\n <g>\n <path d=\"M 10.078125 -25.046875 C 11.109375 -26.398438 12.507812 -27.535156 14.28125 -28.453125 C 16.0625 -29.378906 18.070312 -29.84375 20.3125 -29.84375 C 22.863281 -29.84375 25.195312 -29.210938 27.3125 -27.953125 C 29.425781 -26.691406 31.085938 -24.921875 32.296875 -22.640625 C 33.503906 -20.367188 34.109375 -17.757812 34.109375 -14.8125 C 34.109375 -11.863281 33.503906 -9.222656 32.296875 -6.890625 C 31.085938 -4.566406 29.425781 -2.753906 27.3125 -1.453125 C 25.195312 -0.160156 22.863281 0.484375 20.3125 0.484375 C 18.070312 0.484375 16.078125 0.03125 14.328125 -0.875 C 12.585938 -1.78125 11.171875 -2.910156 10.078125 -4.265625 L 10.078125 13.96875 L 4 13.96875 L 4 -29.359375 L 10.078125 -29.359375 Z M 27.921875 -14.8125 C 27.921875 -16.84375 27.503906 -18.59375 26.671875 -20.0625 C 25.835938 -21.539062 24.734375 -22.660156 23.359375 -23.421875 C 21.992188 -24.179688 20.53125 -24.5625 18.96875 -24.5625 C 17.445312 -24.5625 16 -24.171875 14.625 -23.390625 C 13.257812 -22.609375 12.160156 -21.472656 11.328125 -19.984375 C 10.492188 -18.492188 10.078125 -16.734375 10.078125 -14.703125 C 10.078125 -12.679688 10.492188 -10.914062 11.328125 -9.40625 C 12.160156 -7.894531 13.257812 -6.75 14.625 -5.96875 C 16 -5.1875 17.445312 -4.796875 18.96875 -4.796875 C 20.53125 -4.796875 21.992188 -5.191406 23.359375 -5.984375 C 24.734375 -6.785156 25.835938 -7.953125 26.671875 -9.484375 C 27.503906 -11.015625 27.921875 -12.789062 27.921875 -14.8125 Z M 27.921875 -14.8125 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(143.259256, 78.49768)\">\n <g>\n <path d=\"M 30.4375 -29.359375 L 12.421875 13.796875 L 6.125 13.796875 L 12.09375 -0.484375 L 0.53125 -29.359375 L 7.296875 -29.359375 L 15.5625 -6.984375 L 24.140625 -29.359375 Z M 30.4375 -29.359375 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(174.281707, 78.49768)\">\n <g>\n <path d=\"M 10.078125 -39.4375 L 10.078125 0 L 4 0 L 4 -39.4375 Z M 10.078125 -39.4375 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(188.353752, 78.49768)\">\n <g>\n <path d=\"M 16.734375 0.484375 C 13.960938 0.484375 11.457031 -0.144531 9.21875 -1.40625 C 6.976562 -2.664062 5.21875 -4.441406 3.9375 -6.734375 C 2.664062 -9.035156 2.03125 -11.691406 2.03125 -14.703125 C 2.03125 -17.691406 2.6875 -20.335938 4 -22.640625 C 5.3125 -24.953125 7.101562 -26.726562 9.375 -27.96875 C 11.65625 -29.21875 14.195312 -29.84375 17 -29.84375 C 19.8125 -29.84375 22.351562 -29.21875 24.625 -27.96875 C 26.894531 -26.726562 28.6875 -24.953125 30 -22.640625 C 31.320312 -20.335938 31.984375 -17.691406 31.984375 -14.703125 C 31.984375 -11.722656 31.304688 -9.078125 29.953125 -6.765625 C 28.597656 -4.453125 26.757812 -2.664062 24.4375 -1.40625 C 22.113281 -0.144531 19.546875 0.484375 16.734375 0.484375 Z M 16.734375 -4.796875 C 18.296875 -4.796875 19.757812 -5.164062 21.125 -5.90625 C 22.5 -6.65625 23.613281 -7.773438 24.46875 -9.265625 C 25.320312 -10.765625 25.75 -12.578125 25.75 -14.703125 C 25.75 -16.835938 25.335938 -18.640625 24.515625 -20.109375 C 23.703125 -21.585938 22.617188 -22.695312 21.265625 -23.4375 C 19.910156 -24.1875 18.453125 -24.5625 16.890625 -24.5625 C 15.328125 -24.5625 13.878906 -24.1875 12.546875 -23.4375 C 11.210938 -22.695312 10.15625 -21.585938 9.375 -20.109375 C 8.59375 -18.640625 8.203125 -16.835938 8.203125 -14.703125 C 8.203125 -11.546875 9.007812 -9.101562 10.625 -7.375 C 12.25 -5.65625 14.285156 -4.796875 16.734375 -4.796875 Z M 16.734375 -4.796875 \" />\n </g>\n </g>\n </g>\n <g fill=\"currentColor\" fillOpacity=\"1\">\n <g transform=\"translate(222.361196, 78.49768)\">\n <g>\n <path d=\"M 18.8125 -29.84375 C 21.125 -29.84375 23.191406 -29.363281 25.015625 -28.40625 C 26.847656 -27.445312 28.28125 -26.023438 29.3125 -24.140625 C 30.34375 -22.253906 30.859375 -19.984375 30.859375 -17.328125 L 30.859375 0 L 24.84375 0 L 24.84375 -16.421875 C 24.84375 -19.046875 24.179688 -21.054688 22.859375 -22.453125 C 21.546875 -23.859375 19.753906 -24.5625 17.484375 -24.5625 C 15.210938 -24.5625 13.410156 -23.859375 12.078125 -22.453125 C 10.742188 -21.054688 10.078125 -19.046875 10.078125 -16.421875 L 10.078125 0 L 4 0 L 4 -29.359375 L 10.078125 -29.359375 L 10.078125 -26.015625 C 11.066406 -27.222656 12.332031 -28.160156 13.875 -28.828125 C 15.425781 -29.503906 17.070312 -29.84375 18.8125 -29.84375 Z M 18.8125 -29.84375 \" />\n </g>\n </g>\n </g>\n <path\n fill=\"currentColor\"\n d=\"M 53.359375 31.652344 L 53.359375 88.6875 L 62.410156 90.859375 L 62.410156 29.484375 Z M 53.359375 31.652344 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <g clipPath=\"url(#38f6fcde47)\">\n <path\n fill=\"currentColor\"\n d=\"M 0.339844 47.433594 L 0.339844 72.910156 C 0.339844 73.34375 0.410156 73.769531 0.554688 74.179688 C 0.699219 74.59375 0.90625 74.96875 1.175781 75.3125 C 1.445312 75.65625 1.765625 75.945312 2.132812 76.179688 C 2.503906 76.414062 2.898438 76.582031 3.324219 76.683594 L 9.390625 78.140625 L 9.390625 42.195312 L 3.3125 43.660156 C 2.890625 43.761719 2.492188 43.929688 2.125 44.164062 C 1.761719 44.402344 1.441406 44.6875 1.171875 45.03125 C 0.902344 45.375 0.695312 45.75 0.554688 46.164062 C 0.410156 46.574219 0.339844 46.996094 0.339844 47.433594 Z M 0.339844 47.433594 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </g>\n <g clipPath=\"url(#af000f7256)\">\n <path\n fill=\"currentColor\"\n d=\"M 64.996094 95.085938 L 64.996094 25.253906 C 64.996094 25.082031 65.027344 24.917969 65.09375 24.761719 C 65.160156 24.601562 65.253906 24.460938 65.375 24.339844 C 65.496094 24.21875 65.636719 24.125 65.792969 24.0625 C 65.953125 23.996094 66.117188 23.960938 66.289062 23.960938 L 71.460938 23.960938 C 71.632812 23.960938 71.796875 23.996094 71.957031 24.0625 C 72.113281 24.125 72.253906 24.21875 72.375 24.339844 C 72.496094 24.460938 72.589844 24.601562 72.65625 24.761719 C 72.722656 24.917969 72.753906 25.082031 72.753906 25.253906 L 72.753906 95.085938 C 72.753906 95.257812 72.722656 95.421875 72.65625 95.582031 C 72.589844 95.738281 72.496094 95.878906 72.375 96 C 72.253906 96.121094 72.113281 96.214844 71.957031 96.28125 C 71.796875 96.347656 71.632812 96.378906 71.460938 96.378906 L 66.289062 96.378906 C 66.117188 96.378906 65.953125 96.347656 65.792969 96.28125 C 65.636719 96.214844 65.496094 96.121094 65.375 96 C 65.253906 95.878906 65.160156 95.738281 65.09375 95.582031 C 65.027344 95.421875 64.996094 95.257812 64.996094 95.085938 Z M 64.996094 95.085938 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </g>\n <path\n fill=\"currentColor\"\n d=\"M 22.320312 81.238281 L 22.320312 39.101562 L 11.976562 41.585938 L 11.976562 78.757812 Z M 22.320312 81.238281 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <path\n fill=\"currentColor\"\n d=\"M 50.769531 88.066406 L 50.769531 32.277344 L 37.839844 35.378906 L 37.839844 84.960938 Z M 50.769531 88.066406 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n <path\n fill=\"currentColor\"\n d=\"M 24.90625 81.863281 L 35.253906 84.34375 L 35.253906 35.996094 L 24.90625 38.480469 Z M 24.90625 81.863281 \"\n fillOpacity=\"1\"\n fillRule=\"nonzero\"\n />\n </svg>\n )\n}\n\nexport default Logo\n", "import {Context} from '@/context'\nimport {access, stat} from 'fs/promises'\nimport {createReadStream} from 'fs'\nimport mime from 'mime'\nimport {Readable} from 'stream'\n\nexport const serveFilePath = async ({\n filePath,\n context\n}: {\n filePath: string\n context: Context\n}) => {\n try {\n await access(filePath)\n } catch (error) {\n return context.notFound()\n }\n\n try {\n const contentType = mime.getType(filePath) || 'application/octet-stream'\n\n context.header('Content-Type', contentType)\n\n let options: {start?: number; end?: number} = {}\n let start: number | undefined\n let end: number | undefined\n\n const range = context.req.header('Range')\n\n if (range) {\n const bytesPrefix = 'bytes='\n if (range.startsWith(bytesPrefix)) {\n const bytesRange = range.substring(bytesPrefix.length)\n const parts = bytesRange.split('-')\n\n if (parts.length === 2) {\n const rangeStart = parts[0]?.trim()\n if (rangeStart) {\n options.start = start = parseInt(rangeStart, 10)\n }\n\n const rangeEnd = parts[1]?.trim()\n if (rangeEnd) {\n options.end = end = parseInt(rangeEnd, 10)\n }\n }\n }\n }\n\n context.header('Accept-Ranges', 'bytes')\n\n const fileStat = await stat(filePath)\n const contentLength = fileStat.size\n\n if (context.req.method === 'HEAD') {\n context.status(200)\n context.header('Accept-Ranges', 'bytes')\n context.header('Content-Length', contentLength.toString())\n\n return context.body(null, 200)\n }\n\n let retrievedLength: number\n if (start !== undefined && end !== undefined) {\n retrievedLength = end + 1 - start\n } else if (start !== undefined) {\n retrievedLength = contentLength - start\n } else if (end !== undefined) {\n retrievedLength = end + 1\n } else {\n retrievedLength = contentLength\n }\n\n context.status(start !== undefined || end !== undefined ? 206 : 200)\n\n context.header('Content-Length', retrievedLength.toString())\n\n if (range !== undefined) {\n context.header(\n 'Content-Range',\n `bytes ${start || 0}-${end || contentLength - 1}/${contentLength}`\n )\n context.header('Accept-Ranges', 'bytes')\n }\n\n const stream = createReadStream(filePath, options)\n const webStream = Readable.toWeb(stream) as ReadableStream\n\n return context.body(webStream)\n } catch (error) {\n return context.text('Error reading file', 500)\n }\n}\n", "import path from 'path'\nimport {Plugin} from '@/index'\nimport {makeAppFiles} from './app-utils'\nimport chokidar, {FSWatcher} from 'chokidar'\nimport fs from 'fs/promises'\nimport esbuild from 'esbuild'\nimport {injectAppHydrationPlugin} from './plugins/inject-app-hydration'\nimport {imagePlugin} from './plugins/image-plugin'\nimport {postcssPlugin} from './plugins/postcss-plugin'\n\nconst DIST_STATIC_DIR = path.join(process.cwd(), '.pylon/__pylon/static')\nconst DIST_PAGES_DIR = path.join(process.cwd(), '.pylon/__pylon/pages')\n\nasync function updateFileIfChanged(\n path: string,\n newContent: Uint8Array<ArrayBufferLike>\n) {\n try {\n const currentContent = await fs.readFile(path)\n if (currentContent.equals(newContent)) {\n return false // No update needed\n }\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err // Ignore file not found error\n }\n\n await fs.writeFile(path, newContent)\n return true // File created or updated\n}\n\nexport const build: Plugin['build'] = async () => {\n const buildAppFile = async () => {\n const appFiles = makeAppFiles()\n\n await updateFileIfChanged(\n path.resolve(process.cwd(), '.pylon', 'app.tsx'),\n Buffer.from(appFiles.routes)\n )\n await updateFileIfChanged(\n path.resolve(process.cwd(), '.pylon', 'slugs.js'),\n Buffer.from(appFiles.slugs)\n )\n }\n\n const copyPublicDir = async () => {\n // Copy the ./public directory content to the .pylon/__pylon/static directory\n const publicDir = path.resolve(process.cwd(), 'public')\n const pylonPublicDir = path.resolve(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'public'\n )\n\n try {\n await fs.access(publicDir)\n\n // Copy recursively the public directory to the static directory\n await fs.mkdir(pylonPublicDir, {recursive: true})\n await fs.cp(publicDir, pylonPublicDir, {recursive: true})\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err // Ignore file not found error\n }\n }\n\n const copyPylonCSS = async () => {\n const pylonCssPathDir = path.join(\n process.cwd(),\n 'node_modules',\n '@getcronit/pylon/dist/pages'\n )\n\n const pylonCssDestDir = path.join(\n process.cwd(),\n '.pylon',\n '__pylon',\n 'static'\n )\n\n // Copy pylon.css and pylon.css.map to the static directory\n\n await fs.mkdir(pylonCssDestDir, {recursive: true})\n await fs.cp(\n path.join(pylonCssPathDir, 'index.css'),\n path.join(pylonCssDestDir, 'pylon.css')\n )\n await fs.cp(\n path.join(pylonCssPathDir, 'index.css.map'),\n path.join(pylonCssDestDir, 'pylon.css.map')\n )\n }\n\n const writeOnEndPlugin: esbuild.Plugin = {\n name: 'write-on-end',\n setup(build) {\n build.onEnd(async result => {\n await Promise.all(\n result.outputFiles!.map(async file => {\n await fs.mkdir(path.dirname(file.path), {recursive: true})\n await updateFileIfChanged(file.path, file.contents)\n })\n )\n })\n }\n }\n\n const nodePaths = [\n path.join(process.cwd(), 'node_modules'),\n path.join(process.cwd(), 'node_modules', '@getcronit/pylon/node_modules')\n ]\n\n let pagesWatcher: FSWatcher | null = null\n\n const clientCtx = await esbuild.context({\n sourcemap: 'linked',\n write: false,\n metafile: true,\n nodePaths,\n absWorkingDir: process.cwd(),\n plugins: [\n injectAppHydrationPlugin,\n imagePlugin,\n postcssPlugin,\n writeOnEndPlugin\n ],\n publicPath: '/__pylon/static',\n assetNames: 'assets/[name]-[hash]',\n chunkNames: 'chunks/[name]-[hash]',\n format: 'esm',\n platform: 'browser',\n entryPoints: ['.pylon/app.tsx'],\n outdir: DIST_STATIC_DIR,\n bundle: true,\n splitting: true,\n minify: false,\n loader: {\n // Map file extensions to the file loader\n\n '.svg': 'file',\n '.woff': 'file',\n '.woff2': 'file',\n '.ttf': 'file',\n '.otf': 'file'\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify(\n process.env.NODE_ENV || 'development'\n )\n },\n mainFields: ['browser', 'module', 'main']\n })\n\n const serverCtx = await esbuild.context({\n sourcemap: 'inline',\n write: false,\n absWorkingDir: process.cwd(),\n nodePaths,\n plugins: [imagePlugin, postcssPlugin, writeOnEndPlugin],\n publicPath: '/__pylon/static',\n assetNames: 'assets/[name]-[hash]',\n chunkNames: 'chunks/[name]-[hash]',\n format: 'esm',\n platform: 'node',\n entryPoints: ['.pylon/app.tsx'],\n outdir: DIST_PAGES_DIR,\n bundle: true,\n splitting: false,\n external: ['@getcronit/pylon', 'react', 'react-dom', 'gqty', '@gqty/react'],\n minify: true,\n loader: {\n // Map file extensions to the file loader\n\n '.svg': 'file',\n '.woff': 'file',\n '.woff2': 'file',\n '.ttf': 'file',\n '.otf': 'file'\n },\n define: {\n 'process.env.NODE_ENV': JSON.stringify(\n process.env.NODE_ENV || 'development'\n )\n },\n mainFields: ['module', 'main']\n })\n\n return {\n watch: async () => {\n pagesWatcher = chokidar.watch('pages', {ignoreInitial: true})\n\n pagesWatcher!.on('all', async (event, path) => {\n if (['add', 'change', 'unlink'].includes(event)) {\n await buildAppFile()\n await copyPublicDir()\n await copyPylonCSS()\n }\n })\n\n await Promise.all([clientCtx.watch(), serverCtx.watch()])\n },\n dispose: async () => {\n if (pagesWatcher) {\n pagesWatcher.close()\n }\n\n Promise.all([clientCtx.dispose(), serverCtx.dispose()])\n },\n rebuild: async () => {\n await buildAppFile()\n await copyPublicDir()\n await copyPylonCSS()\n\n await Promise.all([clientCtx.rebuild(), serverCtx.rebuild()])\n\n return {} as any\n },\n cancel: async () => {\n if (pagesWatcher) {\n await pagesWatcher.close()\n }\n\n await Promise.all([clientCtx.cancel(), serverCtx.cancel()])\n }\n }\n}\n", "import fs from 'fs'\nimport path from 'path'\n\nconst PAGES_DIR = './pages'\n\n/**\n * Interface representing a route configuration.\n */\ninterface Route {\n path?: string\n Component?: string\n errorElement?: string\n lazy?: string\n loader?: string\n index?: boolean\n children?: Route[]\n HydrateFallback?: string\n}\n\n/**\n * Array to collect import statements.\n */\nlet imports: string[] = []\n\n/**\n * Array to store the route slugs.\n */\nlet routeSlugs: string[] = []\n\n/**\n * Converts a file path to a corresponding layout component name.\n * @param filePath - The file path to convert.\n * @returns The generated layout component name.\n */\nfunction getLayoutComponentName(filePath: string): string {\n return (\n filePath\n .replace(PAGES_DIR, '')\n .replace(/\\\\/g, '/')\n .replace(/layout\\.tsx$/, '')\n .split('/')\n .filter(Boolean)\n .map(segment => segment.charAt(0).toUpperCase() + segment.slice(1))\n .join('') + 'Layout'\n )\n}\n\n/**\n * Converts dynamic route segments from [param] format to :param format.\n * @param segment - A segment of the route.\n * @returns The converted route segment.\n */\nfunction convertToDynamicRoute(segment: string): string {\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return `:${segment.slice(1, -1)}`\n }\n return segment\n}\n\n/**\n * Recursively scans a directory to build route objects.\n * @param directory - The directory to scan.\n * @param basePath - The base route path accumulated so far.\n * @returns A Route object or null if the directory does not define a route.\n */\nfunction scanDirectory(directory: string, basePath: string = ''): Route | null {\n const items = fs.readdirSync(directory, {withFileTypes: true})\n const route: Route = {path: basePath || '/', children: []}\n let hasLayout = false\n let pageFound = false\n\n for (const item of items) {\n const itemPath = path.join(directory, item.name)\n const relativePath = path.join(basePath, item.name).replace(/\\\\/g, '/')\n const importPath = `\"./${path\n .join('..', PAGES_DIR, relativePath)\n .replace(/\\.tsx$/, '')}\"`\n\n if (item.isDirectory()) {\n const childRoute = scanDirectory(itemPath, relativePath)\n if (childRoute) {\n route.children!.push(childRoute)\n }\n } else if (item.name === 'layout.tsx') {\n const layoutComponentName = getLayoutComponentName(relativePath)\n imports.push(`import ${layoutComponentName} from ${importPath};`)\n\n const componentName =\n layoutComponentName === 'Layout'\n ? `RootLayout`\n : `${layoutComponentName}`\n\n route.Component = `withLoaderData(() => <${componentName} children={<Outlet />} />)`\n\n if (route.path === '/') {\n route.errorElement = '<ErrorElement />'\n }\n\n route.HydrateFallback = 'HydrateFallback'\n\n hasLayout = true\n } else if (item.name === 'page.tsx') {\n // if (hasLayout) {\n // route.children!.push({\n // path: undefined,\n // index: true,\n // lazy: `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`,\n // loader: `loader`\n // })\n // } else {\n // route.lazy = `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`\n // route.loader = `loader`\n // if (basePath === '') {\n // route.index = true\n // }\n // }\n\n route.children!.push({\n path: undefined,\n index: true,\n lazy: `async () => {const i = await import(${importPath}); return {Component: withLoaderData(i.default)}}`,\n loader: `loader`,\n HydrateFallback: 'HydrateFallback'\n })\n\n pageFound = true\n }\n }\n\n // Process dynamic segments on the route's own path\n if (route.path) {\n const segments = route.path\n .split('/')\n .map(segment => convertToDynamicRoute(segment))\n .filter(Boolean)\n const fullPath = segments.length > 0 ? `/${segments.join('/')}` : '/'\n route.path = segments[segments.length - 1] || '/'\n if (hasLayout || pageFound) {\n routeSlugs.push(fullPath)\n }\n }\n\n if (\n hasLayout ||\n route.lazy ||\n (route.children && route.children.length > 0)\n ) {\n return route\n }\n return null\n}\n\n/**\n * Serializes an object into a string that represents code.\n * @param obj - The object to serialize.\n * @returns The serialized representation.\n */\nfunction serialize(obj: any, parentKey?: string | number): string {\n if (Array.isArray(obj)) {\n return `[${obj.map(serialize).join(', ')}]`\n } else if (obj && typeof obj === 'object') {\n const entries = Object.entries(obj).map(\n ([key, value]) => `${JSON.stringify(key)}: ${serialize(value, key)}`\n )\n return `{${entries.join(', ')}}`\n } else if (typeof obj === 'string') {\n if (\n parentKey === 'lazy' ||\n parentKey === 'loader' ||\n parentKey === 'Component' ||\n parentKey === 'errorElement' ||\n parentKey === 'HydrateFallback'\n ) {\n return obj\n }\n\n return JSON.stringify(obj)\n } else {\n return String(obj)\n }\n}\n\n/**\n * Builds the route configuration and outputs the generated code.\n * @returns The complete file content as a string.\n */\nexport function makeAppFiles() {\n imports = []\n routeSlugs = []\n\n const rootRoute = scanDirectory(PAGES_DIR)\n const notFoundRoute: Route = {\n path: '*',\n Component: 'NotFoundPage'\n }\n\n const routes = `${imports.join('\\n')}\n\nimport {__PYLON_ROUTER_INTERNALS_DO_NOT_USE, __PYLON_INTERNALS_DO_NOT_USE, GlobalErrorPage} from '@getcronit/pylon/pages'\nconst Outlet = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.Outlet\n\nconst ErrorElement = () => {\n const error = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useRouteError()\n\n return <GlobalErrorPage error={error} />\n}\n\nconst HydrateFallback = () => {\n return <div>Loading...</div>\n}\n\nfunction withLoaderData<T>(Component: React.ComponentType<{ data: T }>) {\n return function WithLoaderDataWrapper(props: T) {\n const client = __PYLON_INTERNALS_DO_NOT_USE.useDataClient()\n const cacheSnapshot = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useLoaderData()\n\n\n const location = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useLocation()\n const [searchParams] = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useSearchParams()\n const searchParamsObject = Object.fromEntries(searchParams.entries())\n const params = __PYLON_ROUTER_INTERNALS_DO_NOT_USE.useParams()\n\n client.useHydrateCache({cacheSnapshot})\n const data = client.useQuery()\n\n return <Component {...(props as any)} path={location.pathname} params={params} searchParams={searchParamsObject} data={data} />;\n };\n}\n\nconst loader: __PYLON_ROUTER_INTERNALS_DO_NOT_USE.LoaderFunction = async ({ request }) => {\n if (\n request.headers.has('accept') &&\n request.headers.get('accept') === 'application/json'\n ) {\n // Skip the loader if the request is for JSON\n return null\n }\n const url = new URL(request.url)\n const headers = new Headers()\n headers.set('Accept', 'application/json')\n\n if (typeof process !== \"undefined\") {\n headers.set(\"Authorization\", process.env.PYLON_CLIENT_TOKEN || undefined);\n }\n\n let browserOrInternalFetch: typeof fetch = fetch\n\n try {\n const moduleNameToPreventBundling = '@getcronit/pylon'\n const {app} = await import(moduleNameToPreventBundling)\n\n browserOrInternalFetch = app.request\n } catch (error) {\n // Pylon is not found. Maybe we are running in a different environment.\n }\n\n const uri = url.pathname + url.search\n\n try {\n const response = await browserOrInternalFetch(uri, {\n method: 'GET',\n headers: headers,\n })\n const data = await response.json<object>()\n return data\n } catch (error) {\n return null\n }\n}\n\nconst RootLayout = (props: { children: React.ReactNode; [key: string]: any }) => {\n return (\n <Layout {...props}>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"stylesheet\" href=\"/__pylon/static/app.css\" precedence=\"high\" />\n {props.children}\n </Layout>\n )\n}\n\nconst NotFoundPage = () => {\n return <div>Page Not Found</div>\n}\n\nconst routes = ${serialize([rootRoute, notFoundRoute].filter(Boolean))}\n\nexport default routes\n\n`\n\n const slugs = `export default ${JSON.stringify(routeSlugs, null, 2)}`\n\n return {\n routes,\n slugs\n }\n}\n", "import {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\n\nexport const injectAppHydrationPlugin: Plugin = {\n name: 'inject-hydration',\n setup(build) {\n build.onLoad({filter: /.*/, namespace: 'file'}, async args => {\n // check if the file is the app.tsx file\n if (args.path === path.resolve(process.cwd(), '.pylon', 'app.tsx')) {\n let contents = await fs.readFile(args.path, 'utf-8')\n\n const clientPath = path.resolve(process.cwd(), '.pylon/client')\n\n const pathToClient = path.relative(path.dirname(args.path), clientPath)\n\n contents += `\n import {hydrateRoot} from 'react-dom/client'\n import * as client from './${pathToClient}'\n import { __PYLON_ROUTER_INTERNALS_DO_NOT_USE, __PYLON_INTERNALS_DO_NOT_USE, DevOverlay, onCaughtErrorProd, onRecoverableErrorProd, onUncaughtErrorProd } from '@getcronit/pylon/pages';\n const {createBrowserRouter, RouterProvider, matchRoutes} = __PYLON_ROUTER_INTERNALS_DO_NOT_USE\n const {DataClientProvider} = __PYLON_INTERNALS_DO_NOT_USE\n import React, {useMemo} from 'react'\n\n hydrate()\n\n async function hydrate() {\n // Determine if any of the initial routes are lazy\n const lazyMatches = matchRoutes(routes, window.location)?.filter(\n (m) => m.route.lazy\n );\n\n // Load the lazy matches and update the routes before creating your router\n // so we can hydrate the SSR-rendered content synchronously\n if (lazyMatches && lazyMatches?.length > 0) {\n await Promise.all(\n lazyMatches.map(async (m) => {\n const routeModule = await m.route.lazy!();\n Object.assign(m.route, { ...routeModule, lazy: undefined });\n })\n );\n }\n\n const router = createBrowserRouter(routes)\n\n hydrateRoot(\n document,\n <DataClientProvider client={client}>\n <RouterProvider router={router} />\n </DataClientProvider>\n )\n }\n\n\n `\n\n return {\n loader: 'tsx',\n contents\n }\n }\n })\n }\n}\n", "import {createHash} from 'crypto'\nimport {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\n\nexport const imagePlugin: Plugin = {\n name: 'image-plugin',\n setup(build) {\n const outdir = build.initialOptions.outdir\n const publicPath = build.initialOptions.publicPath\n\n if (!outdir || !publicPath) {\n throw new Error('outdir and publicPath must be set in esbuild options')\n }\n\n build.onResolve({filter: /\\.(png|jpe?g)$/}, async args => {\n const filePath = path.resolve(args.resolveDir, args.path)\n\n const fileName = path.basename(filePath)\n const extname = path.extname(filePath)\n const hash = createHash('md5')\n .update(filePath + (await fs.readFile(filePath)))\n .digest('hex')\n .slice(0, 8)\n const newFilename = `${fileName}-${hash}${extname}`\n const newFilePath = path.join(outdir, 'media', newFilename)\n\n // Ensure the directory exists\n await fs.mkdir(path.dirname(newFilePath), {recursive: true})\n\n // Copy the file\n await fs.copyFile(filePath, newFilePath)\n\n return {\n path: newFilePath,\n namespace: 'image'\n }\n })\n\n build.onLoad({filter: /\\.png$|\\.jpg$/}, async args => {\n const sharp = (await import('sharp')).default\n\n // Load file and read the dimensions\n const image = sharp(args.path)\n const metadata = await image.metadata()\n\n // Build the URL with the publicPath and w/h search params\n const url = `${publicPath}/media/${path.basename(args.path)}`\n\n const output = image\n .resize({\n width: Math.min(metadata.width ?? 16, 16),\n height: Math.min(metadata.height ?? 16, 16),\n fit: 'inside'\n })\n .toFormat('webp', {\n quality: 30,\n alphaQuality: 20,\n smartSubsample: true\n })\n\n const {data, info} = await output.toBuffer({resolveWithObject: true})\n const dataURIBase64 = `data:image/${info.format};base64,${data.toString(\n 'base64'\n )}`\n\n return {\n contents: JSON.stringify({\n url,\n width: metadata.width,\n height: metadata.height,\n blurDataURL: dataURIBase64\n }),\n loader: 'json'\n }\n })\n }\n}\n", "import {Plugin} from 'esbuild'\nimport path from 'path'\nimport fs from 'fs/promises'\nimport loadConfig from 'postcss-load-config'\nimport postcss from 'postcss'\n\nexport const postcssPlugin: Plugin = {\n name: 'postcss-plugin',\n setup(build) {\n build.onLoad({filter: /.css$/, namespace: 'file'}, async args => {\n const {plugins, options} = await loadConfig()\n\n const css = await fs.readFile(args.path, 'utf-8')\n\n const result = await postcss(plugins)\n .process(css, {\n ...options,\n from: args.path\n })\n .then(result => result)\n\n return {\n contents: result.css,\n loader: 'css'\n }\n })\n }\n}\n", "import {Plugin} from '@/index'\nimport {setup, PageData, PageProps} from './setup'\nimport {build} from './build'\n\nexport {PageData, PageProps}\n\nexport function usePages(): Plugin {\n return {\n setup,\n build\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ctx", "crypto", "env", "app", "env", "HTTPException", "env", "HTTPException", "Kind", "Sentry", "path", "app", "html", "app", "html", "path", "Kind", "handler", "fs", "path", "Readable", "jsx", "jsxs", "jsx", "env", "app", "handler", "Readable", "path", "isSupportedFormat", "format", "fs", "path", "fs", "path", "fs", "path", "fs", "path", "fs", "build", "createHash", "path", "fs", "build", "fs", "build", "result", "path", "fs", "build"]
|
|
7
7
|
}
|
package/dist/pages/index.css
CHANGED
package/dist/pages/index.css.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/globals.css"],
|
|
4
|
-
"sourcesContent": ["/*! tailwindcss v4.0.7 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-serif: ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(0.971 0.013 17.38);\n --color-red-100: oklch(0.936 0.032 17.717);\n --color-red-200: oklch(0.885 0.062 18.334);\n --color-red-300: oklch(0.808 0.114 19.571);\n --color-red-400: oklch(0.704 0.191 22.216);\n --color-red-500: oklch(0.637 0.237 25.331);\n --color-red-600: oklch(0.577 0.245 27.325);\n --color-red-700: oklch(0.505 0.213 27.518);\n --color-red-800: oklch(0.444 0.177 26.899);\n --color-red-900: oklch(0.396 0.141 25.723);\n --color-red-950: oklch(0.258 0.092 26.042);\n --color-orange-50: oklch(0.98 0.016 73.684);\n --color-orange-100: oklch(0.954 0.038 75.164);\n --color-orange-200: oklch(0.901 0.076 70.697);\n --color-orange-300: oklch(0.837 0.128 66.29);\n --color-orange-400: oklch(0.75 0.183 55.934);\n --color-orange-500: oklch(0.705 0.213 47.604);\n --color-orange-600: oklch(0.646 0.222 41.116);\n --color-orange-700: oklch(0.553 0.195 38.402);\n --color-orange-800: oklch(0.47 0.157 37.304);\n --color-orange-900: oklch(0.408 0.123 38.172);\n --color-orange-950: oklch(0.266 0.079 36.259);\n --color-amber-50: oklch(0.987 0.022 95.277);\n --color-amber-100: oklch(0.962 0.059 95.617);\n --color-amber-200: oklch(0.924 0.12 95.746);\n --color-amber-300: oklch(0.879 0.169 91.605);\n --color-amber-400: oklch(0.828 0.189 84.429);\n --color-amber-500: oklch(0.769 0.188 70.08);\n --color-amber-600: oklch(0.666 0.179 58.318);\n --color-amber-700: oklch(0.555 0.163 48.998);\n --color-amber-800: oklch(0.473 0.137 46.201);\n --color-amber-900: oklch(0.414 0.112 45.904);\n --color-amber-950: oklch(0.279 0.077 45.635);\n --color-yellow-50: oklch(0.987 0.026 102.212);\n --color-yellow-100: oklch(0.973 0.071 103.193);\n --color-yellow-200: oklch(0.945 0.129 101.54);\n --color-yellow-300: oklch(0.905 0.182 98.111);\n --color-yellow-400: oklch(0.852 0.199 91.936);\n --color-yellow-500: oklch(0.795 0.184 86.047);\n --color-yellow-600: oklch(0.681 0.162 75.834);\n --color-yellow-700: oklch(0.554 0.135 66.442);\n --color-yellow-800: oklch(0.476 0.114 61.907);\n --color-yellow-900: oklch(0.421 0.095 57.708);\n --color-yellow-950: oklch(0.286 0.066 53.813);\n --color-lime-50: oklch(0.986 0.031 120.757);\n --color-lime-100: oklch(0.967 0.067 122.328);\n --color-lime-200: oklch(0.938 0.127 124.321);\n --color-lime-300: oklch(0.897 0.196 126.665);\n --color-lime-400: oklch(0.841 0.238 128.85);\n --color-lime-500: oklch(0.768 0.233 130.85);\n --color-lime-600: oklch(0.648 0.2 131.684);\n --color-lime-700: oklch(0.532 0.157 131.589);\n --color-lime-800: oklch(0.453 0.124 130.933);\n --color-lime-900: oklch(0.405 0.101 131.063);\n --color-lime-950: oklch(0.274 0.072 132.109);\n --color-green-50: oklch(0.982 0.018 155.826);\n --color-green-100: oklch(0.962 0.044 156.743);\n --color-green-200: oklch(0.925 0.084 155.995);\n --color-green-300: oklch(0.871 0.15 154.449);\n --color-green-400: oklch(0.792 0.209 151.711);\n --color-green-500: oklch(0.723 0.219 149.579);\n --color-green-600: oklch(0.627 0.194 149.214);\n --color-green-700: oklch(0.527 0.154 150.069);\n --color-green-800: oklch(0.448 0.119 151.328);\n --color-green-900: oklch(0.393 0.095 152.535);\n --color-green-950: oklch(0.266 0.065 152.934);\n --color-emerald-50: oklch(0.979 0.021 166.113);\n --color-emerald-100: oklch(0.95 0.052 163.051);\n --color-emerald-200: oklch(0.905 0.093 164.15);\n --color-emerald-300: oklch(0.845 0.143 164.978);\n --color-emerald-400: oklch(0.765 0.177 163.223);\n --color-emerald-500: oklch(0.696 0.17 162.48);\n --color-emerald-600: oklch(0.596 0.145 163.225);\n --color-emerald-700: oklch(0.508 0.118 165.612);\n --color-emerald-800: oklch(0.432 0.095 166.913);\n --color-emerald-900: oklch(0.378 0.077 168.94);\n --color-emerald-950: oklch(0.262 0.051 172.552);\n --color-teal-50: oklch(0.984 0.014 180.72);\n --color-teal-100: oklch(0.953 0.051 180.801);\n --color-teal-200: oklch(0.91 0.096 180.426);\n --color-teal-300: oklch(0.855 0.138 181.071);\n --color-teal-400: oklch(0.777 0.152 181.912);\n --color-teal-500: oklch(0.704 0.14 182.503);\n --color-teal-600: oklch(0.6 0.118 184.704);\n --color-teal-700: oklch(0.511 0.096 186.391);\n --color-teal-800: oklch(0.437 0.078 188.216);\n --color-teal-900: oklch(0.386 0.063 188.416);\n --color-teal-950: oklch(0.277 0.046 192.524);\n --color-cyan-50: oklch(0.984 0.019 200.873);\n --color-cyan-100: oklch(0.956 0.045 203.388);\n --color-cyan-200: oklch(0.917 0.08 205.041);\n --color-cyan-300: oklch(0.865 0.127 207.078);\n --color-cyan-400: oklch(0.789 0.154 211.53);\n --color-cyan-500: oklch(0.715 0.143 215.221);\n --color-cyan-600: oklch(0.609 0.126 221.723);\n --color-cyan-700: oklch(0.52 0.105 223.128);\n --color-cyan-800: oklch(0.45 0.085 224.283);\n --color-cyan-900: oklch(0.398 0.07 227.392);\n --color-cyan-950: oklch(0.302 0.056 229.695);\n --color-sky-50: oklch(0.977 0.013 236.62);\n --color-sky-100: oklch(0.951 0.026 236.824);\n --color-sky-200: oklch(0.901 0.058 230.902);\n --color-sky-300: oklch(0.828 0.111 230.318);\n --color-sky-400: oklch(0.746 0.16 232.661);\n --color-sky-500: oklch(0.685 0.169 237.323);\n --color-sky-600: oklch(0.588 0.158 241.966);\n --color-sky-700: oklch(0.5 0.134 242.749);\n --color-sky-800: oklch(0.443 0.11 240.79);\n --color-sky-900: oklch(0.391 0.09 240.876);\n --color-sky-950: oklch(0.293 0.066 243.157);\n --color-blue-50: oklch(0.97 0.014 254.604);\n --color-blue-100: oklch(0.932 0.032 255.585);\n --color-blue-200: oklch(0.882 0.059 254.128);\n --color-blue-300: oklch(0.809 0.105 251.813);\n --color-blue-400: oklch(0.707 0.165 254.624);\n --color-blue-500: oklch(0.623 0.214 259.815);\n --color-blue-600: oklch(0.546 0.245 262.881);\n --color-blue-700: oklch(0.488 0.243 264.376);\n --color-blue-800: oklch(0.424 0.199 265.638);\n --color-blue-900: oklch(0.379 0.146 265.522);\n --color-blue-950: oklch(0.282 0.091 267.935);\n --color-indigo-50: oklch(0.962 0.018 272.314);\n --color-indigo-100: oklch(0.93 0.034 272.788);\n --color-indigo-200: oklch(0.87 0.065 274.039);\n --color-indigo-300: oklch(0.785 0.115 274.713);\n --color-indigo-400: oklch(0.673 0.182 276.935);\n --color-indigo-500: oklch(0.585 0.233 277.117);\n --color-indigo-600: oklch(0.511 0.262 276.966);\n --color-indigo-700: oklch(0.457 0.24 277.023);\n --color-indigo-800: oklch(0.398 0.195 277.366);\n --color-indigo-900: oklch(0.359 0.144 278.697);\n --color-indigo-950: oklch(0.257 0.09 281.288);\n --color-violet-50: oklch(0.969 0.016 293.756);\n --color-violet-100: oklch(0.943 0.029 294.588);\n --color-violet-200: oklch(0.894 0.057 293.283);\n --color-violet-300: oklch(0.811 0.111 293.571);\n --color-violet-400: oklch(0.702 0.183 293.541);\n --color-violet-500: oklch(0.606 0.25 292.717);\n --color-violet-600: oklch(0.541 0.281 293.009);\n --color-violet-700: oklch(0.491 0.27 292.581);\n --color-violet-800: oklch(0.432 0.232 292.759);\n --color-violet-900: oklch(0.38 0.189 293.745);\n --color-violet-950: oklch(0.283 0.141 291.089);\n --color-purple-50: oklch(0.977 0.014 308.299);\n --color-purple-100: oklch(0.946 0.033 307.174);\n --color-purple-200: oklch(0.902 0.063 306.703);\n --color-purple-300: oklch(0.827 0.119 306.383);\n --color-purple-400: oklch(0.714 0.203 305.504);\n --color-purple-500: oklch(0.627 0.265 303.9);\n --color-purple-600: oklch(0.558 0.288 302.321);\n --color-purple-700: oklch(0.496 0.265 301.924);\n --color-purple-800: oklch(0.438 0.218 303.724);\n --color-purple-900: oklch(0.381 0.176 304.987);\n --color-purple-950: oklch(0.291 0.149 302.717);\n --color-fuchsia-50: oklch(0.977 0.017 320.058);\n --color-fuchsia-100: oklch(0.952 0.037 318.852);\n --color-fuchsia-200: oklch(0.903 0.076 319.62);\n --color-fuchsia-300: oklch(0.833 0.145 321.434);\n --color-fuchsia-400: oklch(0.74 0.238 322.16);\n --color-fuchsia-500: oklch(0.667 0.295 322.15);\n --color-fuchsia-600: oklch(0.591 0.293 322.896);\n --color-fuchsia-700: oklch(0.518 0.253 323.949);\n --color-fuchsia-800: oklch(0.452 0.211 324.591);\n --color-fuchsia-900: oklch(0.401 0.17 325.612);\n --color-fuchsia-950: oklch(0.293 0.136 325.661);\n --color-pink-50: oklch(0.971 0.014 343.198);\n --color-pink-100: oklch(0.948 0.028 342.258);\n --color-pink-200: oklch(0.899 0.061 343.231);\n --color-pink-300: oklch(0.823 0.12 346.018);\n --color-pink-400: oklch(0.718 0.202 349.761);\n --color-pink-500: oklch(0.656 0.241 354.308);\n --color-pink-600: oklch(0.592 0.249 0.584);\n --color-pink-700: oklch(0.525 0.223 3.958);\n --color-pink-800: oklch(0.459 0.187 3.815);\n --color-pink-900: oklch(0.408 0.153 2.432);\n --color-pink-950: oklch(0.284 0.109 3.907);\n --color-rose-50: oklch(0.969 0.015 12.422);\n --color-rose-100: oklch(0.941 0.03 12.58);\n --color-rose-200: oklch(0.892 0.058 10.001);\n --color-rose-300: oklch(0.81 0.117 11.638);\n --color-rose-400: oklch(0.712 0.194 13.428);\n --color-rose-500: oklch(0.645 0.246 16.439);\n --color-rose-600: oklch(0.586 0.253 17.585);\n --color-rose-700: oklch(0.514 0.222 16.935);\n --color-rose-800: oklch(0.455 0.188 13.697);\n --color-rose-900: oklch(0.41 0.159 10.272);\n --color-rose-950: oklch(0.271 0.105 12.094);\n --color-slate-50: oklch(0.984 0.003 247.858);\n --color-slate-100: oklch(0.968 0.007 247.896);\n --color-slate-200: oklch(0.929 0.013 255.508);\n --color-slate-300: oklch(0.869 0.022 252.894);\n --color-slate-400: oklch(0.704 0.04 256.788);\n --color-slate-500: oklch(0.554 0.046 257.417);\n --color-slate-600: oklch(0.446 0.043 257.281);\n --color-slate-700: oklch(0.372 0.044 257.287);\n --color-slate-800: oklch(0.279 0.041 260.031);\n --color-slate-900: oklch(0.208 0.042 265.755);\n --color-slate-950: oklch(0.129 0.042 264.695);\n --color-gray-50: oklch(0.985 0.002 247.839);\n --color-gray-100: oklch(0.967 0.003 264.542);\n --color-gray-200: oklch(0.928 0.006 264.531);\n --color-gray-300: oklch(0.872 0.01 258.338);\n --color-gray-400: oklch(0.707 0.022 261.325);\n --color-gray-500: oklch(0.551 0.027 264.364);\n --color-gray-600: oklch(0.446 0.03 256.802);\n --color-gray-700: oklch(0.373 0.034 259.733);\n --color-gray-800: oklch(0.278 0.033 256.848);\n --color-gray-900: oklch(0.21 0.034 264.665);\n --color-gray-950: oklch(0.13 0.028 261.692);\n --color-zinc-50: oklch(0.985 0 0);\n --color-zinc-100: oklch(0.967 0.001 286.375);\n --color-zinc-200: oklch(0.92 0.004 286.32);\n --color-zinc-300: oklch(0.871 0.006 286.286);\n --color-zinc-400: oklch(0.705 0.015 286.067);\n --color-zinc-500: oklch(0.552 0.016 285.938);\n --color-zinc-600: oklch(0.442 0.017 285.786);\n --color-zinc-700: oklch(0.37 0.013 285.805);\n --color-zinc-800: oklch(0.274 0.006 286.033);\n --color-zinc-900: oklch(0.21 0.006 285.885);\n --color-zinc-950: oklch(0.141 0.005 285.823);\n --color-neutral-50: oklch(0.985 0 0);\n --color-neutral-100: oklch(0.97 0 0);\n --color-neutral-200: oklch(0.922 0 0);\n --color-neutral-300: oklch(0.87 0 0);\n --color-neutral-400: oklch(0.708 0 0);\n --color-neutral-500: oklch(0.556 0 0);\n --color-neutral-600: oklch(0.439 0 0);\n --color-neutral-700: oklch(0.371 0 0);\n --color-neutral-800: oklch(0.269 0 0);\n --color-neutral-900: oklch(0.205 0 0);\n --color-neutral-950: oklch(0.145 0 0);\n --color-stone-50: oklch(0.985 0.001 106.423);\n --color-stone-100: oklch(0.97 0.001 106.424);\n --color-stone-200: oklch(0.923 0.003 48.717);\n --color-stone-300: oklch(0.869 0.005 56.366);\n --color-stone-400: oklch(0.709 0.01 56.259);\n --color-stone-500: oklch(0.553 0.013 58.071);\n --color-stone-600: oklch(0.444 0.011 73.639);\n --color-stone-700: oklch(0.374 0.01 67.558);\n --color-stone-800: oklch(0.268 0.007 34.298);\n --color-stone-900: oklch(0.216 0.006 56.043);\n --color-stone-950: oklch(0.147 0.004 49.25);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n --container-3xs: 16rem;\n --container-2xs: 18rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --text-8xl: 6rem;\n --text-8xl--line-height: 1;\n --text-9xl: 8rem;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n --tracking-tighter: -0.05em;\n --tracking-tight: -0.025em;\n --tracking-normal: 0em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --radius-xs: 0.125rem;\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-4xl: 2rem;\n --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\n --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\n --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\n --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\n --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\n --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\n --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\n --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --animate-bounce: bounce 1s infinite;\n --blur-xs: 4px;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n --perspective-dramatic: 100px;\n --perspective-near: 300px;\n --perspective-normal: 500px;\n --perspective-midrange: 800px;\n --perspective-distant: 1200px;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-font-feature-settings: var(--font-sans--font-feature-settings);\n --default-font-variation-settings: var(\n --font-sans--font-variation-settings\n );\n --default-mono-font-family: var(--font-mono);\n --default-mono-font-feature-settings: var(\n --font-mono--font-feature-settings\n );\n --default-mono-font-variation-settings: var(\n --font-mono--font-variation-settings\n );\n --color-background: hsl(var(--background));\n --color-foreground: hsl(var(--foreground));\n --color-card: hsl(var(--card));\n --color-card-foreground: hsl(var(--card-foreground));\n --color-popover: hsl(var(--popover));\n --color-popover-foreground: hsl(var(--popover-foreground));\n --color-primary: hsl(var(--primary));\n --color-primary-foreground: hsl(var(--primary-foreground));\n --color-secondary: hsl(var(--secondary));\n --color-secondary-foreground: hsl(var(--secondary-foreground));\n --color-muted: hsl(var(--muted));\n --color-muted-foreground: hsl(var(--muted-foreground));\n --color-accent: hsl(var(--accent));\n --color-accent-foreground: hsl(var(--accent-foreground));\n --color-destructive: hsl(var(--destructive));\n --color-destructive-foreground: hsl(var(--destructive-foreground));\n --color-border: hsl(var(--border));\n --color-input: hsl(var(--input));\n --color-ring: hsl(var(--ring));\n --color-chart-1: hsl(var(--chart-1));\n --color-chart-2: hsl(var(--chart-2));\n --color-chart-3: hsl(var(--chart-3));\n --color-chart-4: hsl(var(--chart-4));\n --color-chart-5: hsl(var(--chart-5));\n --color-sidebar: hsl(var(--sidebar-background));\n --color-sidebar-foreground: hsl(var(--sidebar-foreground));\n --color-sidebar-primary: hsl(var(--sidebar-primary));\n --color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));\n --color-sidebar-accent: hsl(var(--sidebar-accent));\n --color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));\n --color-sidebar-border: hsl(var(--sidebar-border));\n --color-sidebar-ring: hsl(var(--sidebar-ring));\n --animate-accordion-down: accordion-down 0.2s ease-out;\n --animate-accordion-up: accordion-up 0.2s ease-out;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" );\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var( --default-font-variation-settings, normal );\n -webkit-tap-highlight-color: transparent;\n }\n body {\n line-height: inherit;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var( --default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace );\n font-feature-settings: var( --default-mono-font-feature-settings, normal );\n font-variation-settings: var( --default-mono-font-variation-settings, normal );\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .z-50 {\n z-index: 50;\n }\n .order-123 {\n order: 123;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mt-16 {\n margin-top: calc(var(--spacing) * 16);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-flex {\n display: inline-flex;\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-auto {\n width: auto;\n }\n .w-full {\n width: 100%;\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .transform {\n transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);\n }\n .resize {\n resize: both;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-neutral-800 {\n border-color: var(--color-neutral-800);\n }\n .border-purple-600 {\n border-color: var(--color-purple-600);\n }\n .border-red-600 {\n border-color: var(--color-red-600);\n }\n .border-yellow-600 {\n border-color: var(--color-yellow-600);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/80 {\n background-color: color-mix(in oklab, var(--color-black) 80%, transparent);\n }\n .bg-black\\/90 {\n background-color: color-mix(in oklab, var(--color-black) 90%, transparent);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-destructive {\n background-color: var(--color-destructive);\n }\n .bg-neutral-800 {\n background-color: var(--color-neutral-800);\n }\n .bg-neutral-900 {\n background-color: var(--color-neutral-900);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-black {\n color: var(--color-black);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-neutral-300 {\n color: var(--color-neutral-300);\n }\n .text-neutral-400 {\n color: var(--color-neutral-400);\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--color-secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n .hover\\:bg-neutral-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-200);\n }\n }\n }\n .hover\\:bg-neutral-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-700);\n }\n }\n }\n .hover\\:bg-neutral-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-800);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--color-ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--color-destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n border-color: var(--color-gray-200, currentColor);\n }\n}\n@layer utilities {\n body {\n font-family: Arial, Helvetica, sans-serif;\n }\n}\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 0 0% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 0 0% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 0 0% 3.9%;\n --primary: 0 0% 9%;\n --primary-foreground: 0 0% 98%;\n --secondary: 0 0% 96.1%;\n --secondary-foreground: 0 0% 9%;\n --muted: 0 0% 96.1%;\n --muted-foreground: 0 0% 45.1%;\n --accent: 0 0% 96.1%;\n --accent-foreground: 0 0% 9%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 89.8%;\n --input: 0 0% 89.8%;\n --ring: 0 0% 3.9%;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n --radius: 0.5rem;\n --sidebar-background: 0 0% 98%;\n --sidebar-foreground: 240 5.3% 26.1%;\n --sidebar-primary: 240 5.9% 10%;\n --sidebar-primary-foreground: 0 0% 98%;\n --sidebar-accent: 240 4.8% 95.9%;\n --sidebar-accent-foreground: 240 5.9% 10%;\n --sidebar-border: 220 13% 91%;\n --sidebar-ring: 217.2 91.2% 59.8%;\n }\n .dark {\n --background: 0 0% 3.9%;\n --foreground: 0 0% 98%;\n --card: 0 0% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 0 0% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 0 0% 9%;\n --secondary: 0 0% 14.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 0 0% 14.9%;\n --muted-foreground: 0 0% 63.9%;\n --accent: 0 0% 14.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 14.9%;\n --input: 0 0% 14.9%;\n --ring: 0 0% 83.1%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n --sidebar-background: 240 5.9% 10%;\n --sidebar-foreground: 240 4.8% 95.9%;\n --sidebar-primary: 224.3 76.3% 48%;\n --sidebar-primary-foreground: 0 0% 100%;\n --sidebar-accent: 240 3.7% 15.9%;\n --sidebar-accent-foreground: 240 4.8% 95.9%;\n --sidebar-border: 240 3.7% 15.9%;\n --sidebar-ring: 217.2 91.2% 59.8%;\n }\n}\n@layer base {\n * {\n border-color: var(--color-border);\n }\n body {\n background-color: var(--color-background);\n color: var(--color-foreground);\n }\n}\n@layer base {\n * {\n border-color: var(--color-border);\n outline-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n body {\n background-color: var(--color-background);\n color: var(--color-foreground);\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateX(0);\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateY(0);\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateZ(0);\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n initial-value: skewX(0);\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n initial-value: skewY(0);\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/*! tailwindcss v4.0.7 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-serif: ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-50: oklch(0.971 0.013 17.38);\n --color-red-100: oklch(0.936 0.032 17.717);\n --color-red-200: oklch(0.885 0.062 18.334);\n --color-red-300: oklch(0.808 0.114 19.571);\n --color-red-400: oklch(0.704 0.191 22.216);\n --color-red-500: oklch(0.637 0.237 25.331);\n --color-red-600: oklch(0.577 0.245 27.325);\n --color-red-700: oklch(0.505 0.213 27.518);\n --color-red-800: oklch(0.444 0.177 26.899);\n --color-red-900: oklch(0.396 0.141 25.723);\n --color-red-950: oklch(0.258 0.092 26.042);\n --color-orange-50: oklch(0.98 0.016 73.684);\n --color-orange-100: oklch(0.954 0.038 75.164);\n --color-orange-200: oklch(0.901 0.076 70.697);\n --color-orange-300: oklch(0.837 0.128 66.29);\n --color-orange-400: oklch(0.75 0.183 55.934);\n --color-orange-500: oklch(0.705 0.213 47.604);\n --color-orange-600: oklch(0.646 0.222 41.116);\n --color-orange-700: oklch(0.553 0.195 38.402);\n --color-orange-800: oklch(0.47 0.157 37.304);\n --color-orange-900: oklch(0.408 0.123 38.172);\n --color-orange-950: oklch(0.266 0.079 36.259);\n --color-amber-50: oklch(0.987 0.022 95.277);\n --color-amber-100: oklch(0.962 0.059 95.617);\n --color-amber-200: oklch(0.924 0.12 95.746);\n --color-amber-300: oklch(0.879 0.169 91.605);\n --color-amber-400: oklch(0.828 0.189 84.429);\n --color-amber-500: oklch(0.769 0.188 70.08);\n --color-amber-600: oklch(0.666 0.179 58.318);\n --color-amber-700: oklch(0.555 0.163 48.998);\n --color-amber-800: oklch(0.473 0.137 46.201);\n --color-amber-900: oklch(0.414 0.112 45.904);\n --color-amber-950: oklch(0.279 0.077 45.635);\n --color-yellow-50: oklch(0.987 0.026 102.212);\n --color-yellow-100: oklch(0.973 0.071 103.193);\n --color-yellow-200: oklch(0.945 0.129 101.54);\n --color-yellow-300: oklch(0.905 0.182 98.111);\n --color-yellow-400: oklch(0.852 0.199 91.936);\n --color-yellow-500: oklch(0.795 0.184 86.047);\n --color-yellow-600: oklch(0.681 0.162 75.834);\n --color-yellow-700: oklch(0.554 0.135 66.442);\n --color-yellow-800: oklch(0.476 0.114 61.907);\n --color-yellow-900: oklch(0.421 0.095 57.708);\n --color-yellow-950: oklch(0.286 0.066 53.813);\n --color-lime-50: oklch(0.986 0.031 120.757);\n --color-lime-100: oklch(0.967 0.067 122.328);\n --color-lime-200: oklch(0.938 0.127 124.321);\n --color-lime-300: oklch(0.897 0.196 126.665);\n --color-lime-400: oklch(0.841 0.238 128.85);\n --color-lime-500: oklch(0.768 0.233 130.85);\n --color-lime-600: oklch(0.648 0.2 131.684);\n --color-lime-700: oklch(0.532 0.157 131.589);\n --color-lime-800: oklch(0.453 0.124 130.933);\n --color-lime-900: oklch(0.405 0.101 131.063);\n --color-lime-950: oklch(0.274 0.072 132.109);\n --color-green-50: oklch(0.982 0.018 155.826);\n --color-green-100: oklch(0.962 0.044 156.743);\n --color-green-200: oklch(0.925 0.084 155.995);\n --color-green-300: oklch(0.871 0.15 154.449);\n --color-green-400: oklch(0.792 0.209 151.711);\n --color-green-500: oklch(0.723 0.219 149.579);\n --color-green-600: oklch(0.627 0.194 149.214);\n --color-green-700: oklch(0.527 0.154 150.069);\n --color-green-800: oklch(0.448 0.119 151.328);\n --color-green-900: oklch(0.393 0.095 152.535);\n --color-green-950: oklch(0.266 0.065 152.934);\n --color-emerald-50: oklch(0.979 0.021 166.113);\n --color-emerald-100: oklch(0.95 0.052 163.051);\n --color-emerald-200: oklch(0.905 0.093 164.15);\n --color-emerald-300: oklch(0.845 0.143 164.978);\n --color-emerald-400: oklch(0.765 0.177 163.223);\n --color-emerald-500: oklch(0.696 0.17 162.48);\n --color-emerald-600: oklch(0.596 0.145 163.225);\n --color-emerald-700: oklch(0.508 0.118 165.612);\n --color-emerald-800: oklch(0.432 0.095 166.913);\n --color-emerald-900: oklch(0.378 0.077 168.94);\n --color-emerald-950: oklch(0.262 0.051 172.552);\n --color-teal-50: oklch(0.984 0.014 180.72);\n --color-teal-100: oklch(0.953 0.051 180.801);\n --color-teal-200: oklch(0.91 0.096 180.426);\n --color-teal-300: oklch(0.855 0.138 181.071);\n --color-teal-400: oklch(0.777 0.152 181.912);\n --color-teal-500: oklch(0.704 0.14 182.503);\n --color-teal-600: oklch(0.6 0.118 184.704);\n --color-teal-700: oklch(0.511 0.096 186.391);\n --color-teal-800: oklch(0.437 0.078 188.216);\n --color-teal-900: oklch(0.386 0.063 188.416);\n --color-teal-950: oklch(0.277 0.046 192.524);\n --color-cyan-50: oklch(0.984 0.019 200.873);\n --color-cyan-100: oklch(0.956 0.045 203.388);\n --color-cyan-200: oklch(0.917 0.08 205.041);\n --color-cyan-300: oklch(0.865 0.127 207.078);\n --color-cyan-400: oklch(0.789 0.154 211.53);\n --color-cyan-500: oklch(0.715 0.143 215.221);\n --color-cyan-600: oklch(0.609 0.126 221.723);\n --color-cyan-700: oklch(0.52 0.105 223.128);\n --color-cyan-800: oklch(0.45 0.085 224.283);\n --color-cyan-900: oklch(0.398 0.07 227.392);\n --color-cyan-950: oklch(0.302 0.056 229.695);\n --color-sky-50: oklch(0.977 0.013 236.62);\n --color-sky-100: oklch(0.951 0.026 236.824);\n --color-sky-200: oklch(0.901 0.058 230.902);\n --color-sky-300: oklch(0.828 0.111 230.318);\n --color-sky-400: oklch(0.746 0.16 232.661);\n --color-sky-500: oklch(0.685 0.169 237.323);\n --color-sky-600: oklch(0.588 0.158 241.966);\n --color-sky-700: oklch(0.5 0.134 242.749);\n --color-sky-800: oklch(0.443 0.11 240.79);\n --color-sky-900: oklch(0.391 0.09 240.876);\n --color-sky-950: oklch(0.293 0.066 243.157);\n --color-blue-50: oklch(0.97 0.014 254.604);\n --color-blue-100: oklch(0.932 0.032 255.585);\n --color-blue-200: oklch(0.882 0.059 254.128);\n --color-blue-300: oklch(0.809 0.105 251.813);\n --color-blue-400: oklch(0.707 0.165 254.624);\n --color-blue-500: oklch(0.623 0.214 259.815);\n --color-blue-600: oklch(0.546 0.245 262.881);\n --color-blue-700: oklch(0.488 0.243 264.376);\n --color-blue-800: oklch(0.424 0.199 265.638);\n --color-blue-900: oklch(0.379 0.146 265.522);\n --color-blue-950: oklch(0.282 0.091 267.935);\n --color-indigo-50: oklch(0.962 0.018 272.314);\n --color-indigo-100: oklch(0.93 0.034 272.788);\n --color-indigo-200: oklch(0.87 0.065 274.039);\n --color-indigo-300: oklch(0.785 0.115 274.713);\n --color-indigo-400: oklch(0.673 0.182 276.935);\n --color-indigo-500: oklch(0.585 0.233 277.117);\n --color-indigo-600: oklch(0.511 0.262 276.966);\n --color-indigo-700: oklch(0.457 0.24 277.023);\n --color-indigo-800: oklch(0.398 0.195 277.366);\n --color-indigo-900: oklch(0.359 0.144 278.697);\n --color-indigo-950: oklch(0.257 0.09 281.288);\n --color-violet-50: oklch(0.969 0.016 293.756);\n --color-violet-100: oklch(0.943 0.029 294.588);\n --color-violet-200: oklch(0.894 0.057 293.283);\n --color-violet-300: oklch(0.811 0.111 293.571);\n --color-violet-400: oklch(0.702 0.183 293.541);\n --color-violet-500: oklch(0.606 0.25 292.717);\n --color-violet-600: oklch(0.541 0.281 293.009);\n --color-violet-700: oklch(0.491 0.27 292.581);\n --color-violet-800: oklch(0.432 0.232 292.759);\n --color-violet-900: oklch(0.38 0.189 293.745);\n --color-violet-950: oklch(0.283 0.141 291.089);\n --color-purple-50: oklch(0.977 0.014 308.299);\n --color-purple-100: oklch(0.946 0.033 307.174);\n --color-purple-200: oklch(0.902 0.063 306.703);\n --color-purple-300: oklch(0.827 0.119 306.383);\n --color-purple-400: oklch(0.714 0.203 305.504);\n --color-purple-500: oklch(0.627 0.265 303.9);\n --color-purple-600: oklch(0.558 0.288 302.321);\n --color-purple-700: oklch(0.496 0.265 301.924);\n --color-purple-800: oklch(0.438 0.218 303.724);\n --color-purple-900: oklch(0.381 0.176 304.987);\n --color-purple-950: oklch(0.291 0.149 302.717);\n --color-fuchsia-50: oklch(0.977 0.017 320.058);\n --color-fuchsia-100: oklch(0.952 0.037 318.852);\n --color-fuchsia-200: oklch(0.903 0.076 319.62);\n --color-fuchsia-300: oklch(0.833 0.145 321.434);\n --color-fuchsia-400: oklch(0.74 0.238 322.16);\n --color-fuchsia-500: oklch(0.667 0.295 322.15);\n --color-fuchsia-600: oklch(0.591 0.293 322.896);\n --color-fuchsia-700: oklch(0.518 0.253 323.949);\n --color-fuchsia-800: oklch(0.452 0.211 324.591);\n --color-fuchsia-900: oklch(0.401 0.17 325.612);\n --color-fuchsia-950: oklch(0.293 0.136 325.661);\n --color-pink-50: oklch(0.971 0.014 343.198);\n --color-pink-100: oklch(0.948 0.028 342.258);\n --color-pink-200: oklch(0.899 0.061 343.231);\n --color-pink-300: oklch(0.823 0.12 346.018);\n --color-pink-400: oklch(0.718 0.202 349.761);\n --color-pink-500: oklch(0.656 0.241 354.308);\n --color-pink-600: oklch(0.592 0.249 0.584);\n --color-pink-700: oklch(0.525 0.223 3.958);\n --color-pink-800: oklch(0.459 0.187 3.815);\n --color-pink-900: oklch(0.408 0.153 2.432);\n --color-pink-950: oklch(0.284 0.109 3.907);\n --color-rose-50: oklch(0.969 0.015 12.422);\n --color-rose-100: oklch(0.941 0.03 12.58);\n --color-rose-200: oklch(0.892 0.058 10.001);\n --color-rose-300: oklch(0.81 0.117 11.638);\n --color-rose-400: oklch(0.712 0.194 13.428);\n --color-rose-500: oklch(0.645 0.246 16.439);\n --color-rose-600: oklch(0.586 0.253 17.585);\n --color-rose-700: oklch(0.514 0.222 16.935);\n --color-rose-800: oklch(0.455 0.188 13.697);\n --color-rose-900: oklch(0.41 0.159 10.272);\n --color-rose-950: oklch(0.271 0.105 12.094);\n --color-slate-50: oklch(0.984 0.003 247.858);\n --color-slate-100: oklch(0.968 0.007 247.896);\n --color-slate-200: oklch(0.929 0.013 255.508);\n --color-slate-300: oklch(0.869 0.022 252.894);\n --color-slate-400: oklch(0.704 0.04 256.788);\n --color-slate-500: oklch(0.554 0.046 257.417);\n --color-slate-600: oklch(0.446 0.043 257.281);\n --color-slate-700: oklch(0.372 0.044 257.287);\n --color-slate-800: oklch(0.279 0.041 260.031);\n --color-slate-900: oklch(0.208 0.042 265.755);\n --color-slate-950: oklch(0.129 0.042 264.695);\n --color-gray-50: oklch(0.985 0.002 247.839);\n --color-gray-100: oklch(0.967 0.003 264.542);\n --color-gray-200: oklch(0.928 0.006 264.531);\n --color-gray-300: oklch(0.872 0.01 258.338);\n --color-gray-400: oklch(0.707 0.022 261.325);\n --color-gray-500: oklch(0.551 0.027 264.364);\n --color-gray-600: oklch(0.446 0.03 256.802);\n --color-gray-700: oklch(0.373 0.034 259.733);\n --color-gray-800: oklch(0.278 0.033 256.848);\n --color-gray-900: oklch(0.21 0.034 264.665);\n --color-gray-950: oklch(0.13 0.028 261.692);\n --color-zinc-50: oklch(0.985 0 0);\n --color-zinc-100: oklch(0.967 0.001 286.375);\n --color-zinc-200: oklch(0.92 0.004 286.32);\n --color-zinc-300: oklch(0.871 0.006 286.286);\n --color-zinc-400: oklch(0.705 0.015 286.067);\n --color-zinc-500: oklch(0.552 0.016 285.938);\n --color-zinc-600: oklch(0.442 0.017 285.786);\n --color-zinc-700: oklch(0.37 0.013 285.805);\n --color-zinc-800: oklch(0.274 0.006 286.033);\n --color-zinc-900: oklch(0.21 0.006 285.885);\n --color-zinc-950: oklch(0.141 0.005 285.823);\n --color-neutral-50: oklch(0.985 0 0);\n --color-neutral-100: oklch(0.97 0 0);\n --color-neutral-200: oklch(0.922 0 0);\n --color-neutral-300: oklch(0.87 0 0);\n --color-neutral-400: oklch(0.708 0 0);\n --color-neutral-500: oklch(0.556 0 0);\n --color-neutral-600: oklch(0.439 0 0);\n --color-neutral-700: oklch(0.371 0 0);\n --color-neutral-800: oklch(0.269 0 0);\n --color-neutral-900: oklch(0.205 0 0);\n --color-neutral-950: oklch(0.145 0 0);\n --color-stone-50: oklch(0.985 0.001 106.423);\n --color-stone-100: oklch(0.97 0.001 106.424);\n --color-stone-200: oklch(0.923 0.003 48.717);\n --color-stone-300: oklch(0.869 0.005 56.366);\n --color-stone-400: oklch(0.709 0.01 56.259);\n --color-stone-500: oklch(0.553 0.013 58.071);\n --color-stone-600: oklch(0.444 0.011 73.639);\n --color-stone-700: oklch(0.374 0.01 67.558);\n --color-stone-800: oklch(0.268 0.007 34.298);\n --color-stone-900: oklch(0.216 0.006 56.043);\n --color-stone-950: oklch(0.147 0.004 49.25);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --breakpoint-sm: 40rem;\n --breakpoint-md: 48rem;\n --breakpoint-lg: 64rem;\n --breakpoint-xl: 80rem;\n --breakpoint-2xl: 96rem;\n --container-3xs: 16rem;\n --container-2xs: 18rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-md: 28rem;\n --container-lg: 32rem;\n --container-xl: 36rem;\n --container-2xl: 42rem;\n --container-3xl: 48rem;\n --container-4xl: 56rem;\n --container-5xl: 64rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --text-4xl: 2.25rem;\n --text-4xl--line-height: calc(2.5 / 2.25);\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --text-8xl: 6rem;\n --text-8xl--line-height: 1;\n --text-9xl: 8rem;\n --text-9xl--line-height: 1;\n --font-weight-thin: 100;\n --font-weight-extralight: 200;\n --font-weight-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-extrabold: 800;\n --font-weight-black: 900;\n --tracking-tighter: -0.05em;\n --tracking-tight: -0.025em;\n --tracking-normal: 0em;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --radius-xs: 0.125rem;\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-4xl: 2rem;\n --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\n --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\n --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\n --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\n --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\n --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\n --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\n --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --animate-bounce: bounce 1s infinite;\n --blur-xs: 4px;\n --blur-sm: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n --perspective-dramatic: 100px;\n --perspective-near: 300px;\n --perspective-normal: 500px;\n --perspective-midrange: 800px;\n --perspective-distant: 1200px;\n --aspect-video: 16 / 9;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-font-feature-settings: var(--font-sans--font-feature-settings);\n --default-font-variation-settings: var(\n --font-sans--font-variation-settings\n );\n --default-mono-font-family: var(--font-mono);\n --default-mono-font-feature-settings: var(\n --font-mono--font-feature-settings\n );\n --default-mono-font-variation-settings: var(\n --font-mono--font-variation-settings\n );\n --color-background: hsl(var(--background));\n --color-foreground: hsl(var(--foreground));\n --color-card: hsl(var(--card));\n --color-card-foreground: hsl(var(--card-foreground));\n --color-popover: hsl(var(--popover));\n --color-popover-foreground: hsl(var(--popover-foreground));\n --color-primary: hsl(var(--primary));\n --color-primary-foreground: hsl(var(--primary-foreground));\n --color-secondary: hsl(var(--secondary));\n --color-secondary-foreground: hsl(var(--secondary-foreground));\n --color-muted: hsl(var(--muted));\n --color-muted-foreground: hsl(var(--muted-foreground));\n --color-accent: hsl(var(--accent));\n --color-accent-foreground: hsl(var(--accent-foreground));\n --color-destructive: hsl(var(--destructive));\n --color-destructive-foreground: hsl(var(--destructive-foreground));\n --color-border: hsl(var(--border));\n --color-input: hsl(var(--input));\n --color-ring: hsl(var(--ring));\n --color-chart-1: hsl(var(--chart-1));\n --color-chart-2: hsl(var(--chart-2));\n --color-chart-3: hsl(var(--chart-3));\n --color-chart-4: hsl(var(--chart-4));\n --color-chart-5: hsl(var(--chart-5));\n --color-sidebar: hsl(var(--sidebar-background));\n --color-sidebar-foreground: hsl(var(--sidebar-foreground));\n --color-sidebar-primary: hsl(var(--sidebar-primary));\n --color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));\n --color-sidebar-accent: hsl(var(--sidebar-accent));\n --color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));\n --color-sidebar-border: hsl(var(--sidebar-border));\n --color-sidebar-ring: hsl(var(--sidebar-ring));\n --animate-accordion-down: accordion-down 0.2s ease-out;\n --animate-accordion-up: accordion-up 0.2s ease-out;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" );\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var( --default-font-variation-settings, normal );\n -webkit-tap-highlight-color: transparent;\n }\n body {\n line-height: inherit;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var( --default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace );\n font-feature-settings: var( --default-mono-font-feature-settings, normal );\n font-variation-settings: var( --default-mono-font-variation-settings, normal );\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .z-50 {\n z-index: 50;\n }\n .order-123 {\n order: 123;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mt-16 {\n margin-top: calc(var(--spacing) * 16);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-flex {\n display: inline-flex;\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-auto {\n width: auto;\n }\n .w-full {\n width: 100%;\n }\n .max-w-3xl {\n max-width: var(--container-3xl);\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .transform {\n transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);\n }\n .resize {\n resize: both;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-blue-600 {\n border-color: var(--color-blue-600);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-neutral-800 {\n border-color: var(--color-neutral-800);\n }\n .border-purple-600 {\n border-color: var(--color-purple-600);\n }\n .border-red-600 {\n border-color: var(--color-red-600);\n }\n .border-yellow-600 {\n border-color: var(--color-yellow-600);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-black\\/80 {\n background-color: color-mix(in oklab, var(--color-black) 80%, transparent);\n }\n .bg-black\\/90 {\n background-color: color-mix(in oklab, var(--color-black) 90%, transparent);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-destructive {\n background-color: var(--color-destructive);\n }\n .bg-neutral-800 {\n background-color: var(--color-neutral-800);\n }\n .bg-neutral-900 {\n background-color: var(--color-neutral-900);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-secondary {\n background-color: var(--color-secondary);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .font-mono {\n font-family: var(--font-mono);\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-black {\n color: var(--color-black);\n }\n .text-blue-400 {\n color: var(--color-blue-400);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-neutral-300 {\n color: var(--color-neutral-300);\n }\n .text-neutral-400 {\n color: var(--color-neutral-400);\n }\n .text-neutral-500 {\n color: var(--color-neutral-500);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--color-secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .uppercase {\n text-transform: uppercase;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .running {\n animation-play-state: running;\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n .hover\\:bg-neutral-200 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-200);\n }\n }\n }\n .hover\\:bg-neutral-700 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-700);\n }\n }\n }\n .hover\\:bg-neutral-800 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-neutral-800);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--color-ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--color-destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n &:is(.dark *) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n border-color: var(--color-gray-200, currentColor);\n }\n}\n@layer utilities {\n body {\n font-family: Arial, Helvetica, sans-serif;\n }\n}\n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 0 0% 3.9%;\n --card: 0 0% 100%;\n --card-foreground: 0 0% 3.9%;\n --popover: 0 0% 100%;\n --popover-foreground: 0 0% 3.9%;\n --primary: 0 0% 9%;\n --primary-foreground: 0 0% 98%;\n --secondary: 0 0% 96.1%;\n --secondary-foreground: 0 0% 9%;\n --muted: 0 0% 96.1%;\n --muted-foreground: 0 0% 45.1%;\n --accent: 0 0% 96.1%;\n --accent-foreground: 0 0% 9%;\n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 89.8%;\n --input: 0 0% 89.8%;\n --ring: 0 0% 3.9%;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n --radius: 0.5rem;\n --sidebar-background: 0 0% 98%;\n --sidebar-foreground: 240 5.3% 26.1%;\n --sidebar-primary: 240 5.9% 10%;\n --sidebar-primary-foreground: 0 0% 98%;\n --sidebar-accent: 240 4.8% 95.9%;\n --sidebar-accent-foreground: 240 5.9% 10%;\n --sidebar-border: 220 13% 91%;\n --sidebar-ring: 217.2 91.2% 59.8%;\n }\n .dark {\n --background: 0 0% 3.9%;\n --foreground: 0 0% 98%;\n --card: 0 0% 3.9%;\n --card-foreground: 0 0% 98%;\n --popover: 0 0% 3.9%;\n --popover-foreground: 0 0% 98%;\n --primary: 0 0% 98%;\n --primary-foreground: 0 0% 9%;\n --secondary: 0 0% 14.9%;\n --secondary-foreground: 0 0% 98%;\n --muted: 0 0% 14.9%;\n --muted-foreground: 0 0% 63.9%;\n --accent: 0 0% 14.9%;\n --accent-foreground: 0 0% 98%;\n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n --border: 0 0% 14.9%;\n --input: 0 0% 14.9%;\n --ring: 0 0% 83.1%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n --sidebar-background: 240 5.9% 10%;\n --sidebar-foreground: 240 4.8% 95.9%;\n --sidebar-primary: 224.3 76.3% 48%;\n --sidebar-primary-foreground: 0 0% 100%;\n --sidebar-accent: 240 3.7% 15.9%;\n --sidebar-accent-foreground: 240 4.8% 95.9%;\n --sidebar-border: 240 3.7% 15.9%;\n --sidebar-ring: 217.2 91.2% 59.8%;\n }\n}\n@layer base {\n * {\n border-color: var(--color-border);\n }\n body {\n background-color: var(--color-background);\n color: var(--color-foreground);\n }\n}\n@layer base {\n * {\n border-color: var(--color-border);\n outline-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n body {\n background-color: var(--color-background);\n color: var(--color-foreground);\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateX(0);\n}\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateY(0);\n}\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: rotateZ(0);\n}\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false;\n initial-value: skewX(0);\n}\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false;\n initial-value: skewY(0);\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: \"*\";\n inherits: false;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getcronit/pylon",
|
|
3
|
-
"version": "3.0.0-canary-
|
|
3
|
+
"version": "3.0.0-canary-20250408153816.a853ef59ecad170f4f07500b4a93bfb2b6299b54",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|