@mostfeatured/dbi 0.2.15 → 0.2.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"svelteRenderer.js","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/svelteRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { compile } from \"svelte/compiler\";\r\nimport { DBI } from \"../../../DBI\";\r\nimport { NamespaceEnums } from \"../../../../generated/namespaceData\";\r\nimport { parseHTMLComponentsV2, parseHTMLComponentsV2Multi } from \"./parser\";\r\nimport { parseSvelteComponent, createHandlerContext, SvelteComponentInfo, HandlerContextResult, validateSvelteComponent, logValidationWarnings } from \"./svelteParser\";\r\nimport * as stuffs from \"stuffs\";\r\nimport * as vm from \"vm\";\r\n\r\nexport interface SvelteRenderOptions {\r\n data?: Record<string, any>;\r\n ttl?: number;\r\n /** If true, skips validation warnings (useful for production) */\r\n skipValidation?: boolean;\r\n}\r\n\r\nexport interface ModalDefinition {\r\n title: string;\r\n customId: string;\r\n components: any[];\r\n modalId: string;\r\n}\r\n\r\nexport interface SvelteRenderResult {\r\n components: any[];\r\n handlers: Map<string, { handlerFn: Function, context: any }>;\r\n componentInfo: SvelteComponentInfo;\r\n /** Modal definitions parsed from <components type=\"modal\"> elements */\r\n modals: Map<string, ModalDefinition>;\r\n}\r\n\r\n/**\r\n * Compile and render a Svelte component to Discord components\r\n */\r\nexport async function renderSvelteComponent(\r\n dbi: DBI<NamespaceEnums>,\r\n source: string,\r\n dbiName: string,\r\n options: SvelteRenderOptions = {}\r\n): Promise<SvelteRenderResult> {\r\n const { data = {}, ttl = 0, skipValidation = false } = options;\r\n\r\n // Parse the Svelte component to extract handlers\r\n // This also injects auto-generated names into elements without name attribute\r\n const componentInfo = await parseSvelteComponent(source, data);\r\n\r\n // Validate the component and log warnings (only on first render, not re-renders)\r\n if (!skipValidation && !data.$ref) {\r\n const warnings = validateSvelteComponent(componentInfo, data, dbiName);\r\n if (warnings.length > 0) {\r\n logValidationWarnings(warnings);\r\n }\r\n }\r\n\r\n // Use the processed source (with auto-generated names injected)\r\n const processedSource = componentInfo.processedSource;\r\n\r\n // Compile the Svelte component for SSR (Svelte 5)\r\n let compiled;\r\n try {\r\n compiled = compile(processedSource, {\r\n generate: \"server\",\r\n css: \"injected\",\r\n dev: false,\r\n } as any);\r\n } catch (compileError: any) {\r\n // Format Svelte compile error with helpful details\r\n const errorMessage = compileError.message || 'Unknown compile error';\r\n const location = compileError.start || compileError.loc || compileError.position;\r\n let details = errorMessage;\r\n\r\n if (location) {\r\n const lines = processedSource.split('\\n');\r\n const lineNum = location.line || 1;\r\n const column = location.column || 0;\r\n const errorLine = lines[lineNum - 1] || '';\r\n const prevLine = lines[lineNum - 2] || '';\r\n const nextLine = lines[lineNum] || '';\r\n\r\n details = `\r\nSvelte Compile Error at line ${lineNum}, column ${column}:\r\n${errorMessage}\r\n\r\n${lineNum > 1 ? `${lineNum - 1} | ${prevLine}\\n` : ''}${lineNum} | ${errorLine}\r\n${' '.repeat(String(lineNum).length + 3 + column)}^\r\n${nextLine ? `${lineNum + 1} | ${nextLine}` : ''}\r\n`.trim();\r\n }\r\n\r\n // Check for common mistakes and add hints\r\n let hint = '';\r\n if (errorMessage.includes('Unexpected token')) {\r\n hint = '\\n\\nšŸ’” Hint: Check for missing closing tags, unclosed braces, or invalid JavaScript syntax.';\r\n } else if (errorMessage.includes('is not defined')) {\r\n hint = '\\n\\nšŸ’” Hint: Make sure all variables are declared in $props() or as local variables.';\r\n } else if (errorMessage.includes('Expected')) {\r\n hint = '\\n\\nšŸ’” Hint: There might be a syntax error in your template or script.';\r\n }\r\n\r\n const enhancedError = new Error(`[DBI-Svelte] Failed to compile component \"${dbiName}\":\\n${details}${hint}`);\r\n (enhancedError as any).originalError = compileError;\r\n (enhancedError as any).type = 'svelte-compile-error';\r\n throw enhancedError;\r\n }\r\n\r\n // Create a module context for the compiled code\r\n let html = \"\";\r\n try {\r\n const moduleContext = createModuleContext(dbi, data, ttl);\r\n const Component = evaluateCompiledComponent(compiled.js.code, moduleContext);\r\n\r\n // Svelte 5 SSR: Use render from svelte/server\r\n const { render } = require(\"svelte/server\");\r\n // Pass data properties as top-level props (Svelte 5 expects flat props object)\r\n const renderResult = render(Component, { props: data });\r\n html = renderResult.body || \"\";\r\n } catch (runtimeError: any) {\r\n // Format runtime error with helpful details\r\n const errorMessage = runtimeError.message || 'Unknown runtime error';\r\n let hint = '';\r\n\r\n if (errorMessage.includes('is not a function')) {\r\n hint = '\\n\\nšŸ’” Hint: A function you are trying to call is undefined. Check handler names.';\r\n } else if (errorMessage.includes('Cannot read properties of undefined') || errorMessage.includes('undefined is not an object')) {\r\n hint = '\\n\\nšŸ’” Hint: You are trying to access a property of an undefined value. Check your data object.';\r\n } else if (errorMessage.includes('is not defined')) {\r\n hint = '\\n\\nšŸ’” Hint: A variable is used but not declared. Make sure it is in $props() or declared locally.';\r\n }\r\n\r\n const enhancedError = new Error(`[DBI-Svelte] Runtime error in component \"${dbiName}\":\\n${errorMessage}${hint}`);\r\n (enhancedError as any).originalError = runtimeError;\r\n (enhancedError as any).type = 'svelte-runtime-error';\r\n throw enhancedError;\r\n }\r\n\r\n // For Svelte mode, inject state into interactive elements as a ref\r\n // Reuse existing ref if data already has one, otherwise create new\r\n if (data && Object.keys(data).length > 0) {\r\n let stateRefId: string;\r\n\r\n // Check if data already has a $ref (from previous render)\r\n if (data.$ref && typeof data.$ref === 'string') {\r\n stateRefId = data.$ref;\r\n // Update the existing ref's value with new data\r\n const existingRef = dbi.data.refs.get(stateRefId);\r\n if (existingRef) {\r\n existingRef.value = data;\r\n existingRef.at = Date.now(); // Refresh timestamp\r\n } else {\r\n // Ref expired or was deleted, create new one with same ID\r\n dbi.data.refs.set(stateRefId, { at: Date.now(), value: data, ttl });\r\n }\r\n } else {\r\n // Create a new ref for the state\r\n stateRefId = stuffs.randomString(8);\r\n data.$ref = stateRefId; // Store ref ID in data for future updates\r\n dbi.data.refs.set(stateRefId, { at: Date.now(), value: data, ttl });\r\n }\r\n\r\n // Add state ref to all elements with name attribute (buttons, selects)\r\n // This includes both manual names and auto-generated names from svelteParser\r\n html = html.replace(/<button([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, attrs) => {\r\n // Check if it already has data attributes\r\n if (attrs.includes('data-1:')) return match;\r\n return `<button${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n // Also handle select elements (with optional -menu suffix for Svelte compatibility)\r\n // Supports: string-select, user-select, role-select, channel-select, mentionable-select\r\n // Both with and without -menu suffix (e.g., string-select-menu or string-select)\r\n html = html.replace(/<(string-select(?:-menu)?|user-select(?:-menu)?|role-select(?:-menu)?|channel-select(?:-menu)?|mentionable-select(?:-menu)?)([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, tag, attrs) => {\r\n if (attrs.includes('data-1:')) return match;\r\n return `<${tag}${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n // Handle modal elements with name attribute\r\n html = html.replace(/<modal([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, attrs) => {\r\n if (attrs.includes('data-1:')) return match;\r\n return `<modal${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n }\r\n\r\n // Parse the rendered HTML to Discord components (with modal support)\r\n const parseResult = parseHTMLComponentsV2Multi(dbi, html, dbiName, { data, ttl });\r\n const components = parseResult.components;\r\n const modals = parseResult.modals;\r\n\r\n // Create handler context (also captures $effect callbacks)\r\n const handlerContext = createHandlerContext(componentInfo.scriptContent, data);\r\n const handlers = new Map<string, { handlerFn: Function, context: any }>();\r\n\r\n // Run effects on initial render\r\n handlerContext.runEffects();\r\n\r\n // Map handlers to component names\r\n componentInfo.handlers.forEach((handlerInfo, componentName) => {\r\n const handlerFn = handlerContext.handlers[handlerInfo.handlerName];\r\n if (handlerFn && typeof handlerFn === \"function\") {\r\n handlers.set(componentName, {\r\n handlerFn,\r\n context: data\r\n });\r\n }\r\n });\r\n\r\n return {\r\n components,\r\n handlers,\r\n componentInfo,\r\n modals\r\n };\r\n}\r\n\r\n/**\r\n * Create a module context for evaluating the compiled Svelte component\r\n */\r\nfunction createModuleContext(dbi: DBI<NamespaceEnums>, data: Record<string, any>, ttl: number) {\r\n return {\r\n // Store objects in refs for later retrieval in handlers\r\n // This is used internally by the parser when converting to Discord components\r\n __storeRef: (obj: any) => {\r\n let id = stuffs.randomString(8);\r\n dbi.data.refs.set(id, { at: Date.now(), value: obj, ttl });\r\n return id;\r\n },\r\n\r\n // DBI instance for advanced usage\r\n __dbi: dbi,\r\n\r\n // All data context available\r\n ...data,\r\n data, // Also expose as 'data' prop\r\n };\r\n}\r\n\r\n/**\r\n * Evaluate the compiled Svelte component code\r\n */\r\nfunction evaluateCompiledComponent(code: string, context: Record<string, any>): any {\r\n try {\r\n // Load Svelte 5 internal runtime\r\n const svelteInternal = require(\"svelte/internal/server\");\r\n\r\n // Process the code to work in our context\r\n let processedCode = code;\r\n\r\n // Collect external modules to inject into sandbox\r\n const externalModules: Record<string, any> = {};\r\n\r\n // Replace svelte internal imports\r\n processedCode = processedCode.replace(\r\n /import\\s*\\*\\s*as\\s*(\\w+)\\s*from\\s*[\"']svelte\\/internal\\/server[\"'];?/g,\r\n 'const $1 = __svelteInternal;'\r\n );\r\n processedCode = processedCode.replace(\r\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']svelte\\/internal\\/server[\"'];?/g,\r\n (match, imports) => {\r\n const importList = imports.split(',').map((i: string) => i.trim());\r\n return `const { ${importList.join(', ')} } = __svelteInternal;`;\r\n }\r\n );\r\n\r\n // Handle external module imports (default imports)\r\n processedCode = processedCode.replace(\r\n /import\\s+(\\w+)\\s+from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, varName, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n const mod = require(modulePath);\r\n externalModules[varName] = mod.default || mod;\r\n return `const ${varName} = __externalModules.${varName};`;\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Handle named imports from external modules\r\n processedCode = processedCode.replace(\r\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, imports, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n const mod = require(modulePath);\r\n const importList = imports.split(',').map((i: string) => i.trim());\r\n importList.forEach((importName: string) => {\r\n const [name, alias] = importName.split(' as ').map(s => s.trim());\r\n externalModules[alias || name] = mod[name] || mod.default?.[name];\r\n });\r\n return importList.map((importName: string) => {\r\n const [name, alias] = importName.split(' as ').map(s => s.trim());\r\n return `const ${alias || name} = __externalModules.${alias || name};`;\r\n }).join('\\n');\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Handle namespace imports from external modules\r\n processedCode = processedCode.replace(\r\n /import\\s*\\*\\s*as\\s*(\\w+)\\s*from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, varName, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n const mod = require(modulePath);\r\n externalModules[varName] = mod;\r\n return `const ${varName} = __externalModules.${varName};`;\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Remove any remaining import statements\r\n processedCode = processedCode\r\n .split('\\n')\r\n .filter(line => !line.trim().startsWith('import '))\r\n .join('\\n');\r\n\r\n // Replace 'export default' with assignment\r\n processedCode = processedCode.replace(/export\\s+default\\s+/g, '__exports.default = ');\r\n // Replace 'export function' with assignment\r\n processedCode = processedCode.replace(/export\\s+function\\s+(\\w+)/g, '__exports.$1 = function $1');\r\n // Replace 'export const' with assignment\r\n processedCode = processedCode.replace(/export\\s+const\\s+(\\w+)/g, '__exports.$1 = ');\r\n // Replace 'export let' with assignment \r\n processedCode = processedCode.replace(/export\\s+let\\s+(\\w+)/g, '__exports.$1 = ');\r\n\r\n // Create the sandbox context\r\n const __exports: any = {};\r\n // Svelte lifecycle functions - no-ops for SSR\r\n const svelteLifecycle = {\r\n onMount: () => () => { }, // Returns cleanup function\r\n onDestroy: () => { },\r\n beforeUpdate: () => { },\r\n afterUpdate: () => { },\r\n tick: () => Promise.resolve(),\r\n untrack: (fn: () => any) => fn(),\r\n createEventDispatcher: () => () => { },\r\n };\r\n\r\n // Note: Svelte 5 runes ($state, $derived, etc.) are compile-time features\r\n // The compiler transforms them, so we don't need runtime implementations.\r\n // The `$` variable is used by compiled code as the svelte/internal/server namespace.\r\n\r\n const sandbox = {\r\n __svelteInternal: svelteInternal,\r\n __externalModules: externalModules,\r\n $: svelteInternal, // Direct alias for compiled Svelte code that uses `$`\r\n __exports,\r\n console,\r\n ...svelteLifecycle,\r\n ...context,\r\n };\r\n\r\n // Wrap code in IIFE\r\n const wrappedCode = `\r\n (function() {\r\n ${processedCode}\r\n })();\r\n `;\r\n\r\n // Run in VM context for better isolation\r\n vm.createContext(sandbox);\r\n vm.runInContext(wrappedCode, sandbox);\r\n\r\n // Return the component\r\n const Component = sandbox.__exports.default;\r\n\r\n if (!Component) {\r\n throw new Error(\"Svelte component did not export a default component\");\r\n }\r\n\r\n return Component;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Render a Svelte component from a file\r\n */\r\nexport async function renderSvelteComponentFromFile(\r\n dbi: DBI<NamespaceEnums>,\r\n filePath: string,\r\n dbiName: string,\r\n options: SvelteRenderOptions = {}\r\n): Promise<SvelteRenderResult> {\r\n const fs = require(\"fs\");\r\n const source = fs.readFileSync(filePath, \"utf-8\");\r\n return await renderSvelteComponent(dbi, source, dbiName, options);\r\n}\r\n"]}
1
+ {"version":3,"file":"svelteRenderer.js","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/svelteRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { compile } from \"svelte/compiler\";\r\nimport { DBI } from \"../../../DBI\";\r\nimport { NamespaceEnums } from \"../../../../generated/namespaceData\";\r\nimport { parseHTMLComponentsV2, parseHTMLComponentsV2Multi } from \"./parser\";\r\nimport { parseSvelteComponent, createHandlerContext, SvelteComponentInfo, HandlerContextResult, validateSvelteComponent, logValidationWarnings } from \"./svelteParser\";\r\nimport * as stuffs from \"stuffs\";\r\nimport * as vm from \"vm\";\r\n\r\nexport interface SvelteRenderOptions {\r\n data?: Record<string, any>;\r\n ttl?: number;\r\n /** If true, skips validation warnings (useful for production) */\r\n skipValidation?: boolean;\r\n /** The file path of the Svelte component (used for resolving relative imports) */\r\n filePath?: string;\r\n}\r\n\r\nexport interface ModalDefinition {\r\n title: string;\r\n customId: string;\r\n components: any[];\r\n modalId: string;\r\n}\r\n\r\nexport interface SvelteRenderResult {\r\n components: any[];\r\n handlers: Map<string, { handlerFn: Function, context: any }>;\r\n componentInfo: SvelteComponentInfo;\r\n /** Modal definitions parsed from <components type=\"modal\"> elements */\r\n modals: Map<string, ModalDefinition>;\r\n}\r\n\r\n/**\r\n * Compile and render a Svelte component to Discord components\r\n */\r\nexport async function renderSvelteComponent(\r\n dbi: DBI<NamespaceEnums>,\r\n source: string,\r\n dbiName: string,\r\n options: SvelteRenderOptions = {}\r\n): Promise<SvelteRenderResult> {\r\n const { data = {}, ttl = 0, skipValidation = false, filePath } = options;\r\n\r\n // Parse the Svelte component to extract handlers\r\n // This also injects auto-generated names into elements without name attribute\r\n const componentInfo = await parseSvelteComponent(source, data);\r\n\r\n // Validate the component and log warnings (only on first render, not re-renders)\r\n if (!skipValidation && !data.$ref) {\r\n const warnings = validateSvelteComponent(componentInfo, data, dbiName);\r\n if (warnings.length > 0) {\r\n logValidationWarnings(warnings);\r\n }\r\n }\r\n\r\n // Use the processed source (with auto-generated names injected)\r\n const processedSource = componentInfo.processedSource;\r\n\r\n // Compile the Svelte component for SSR (Svelte 5)\r\n let compiled;\r\n try {\r\n compiled = compile(processedSource, {\r\n generate: \"server\",\r\n css: \"injected\",\r\n dev: false,\r\n } as any);\r\n } catch (compileError: any) {\r\n // Format Svelte compile error with helpful details\r\n const errorMessage = compileError.message || 'Unknown compile error';\r\n const location = compileError.start || compileError.loc || compileError.position;\r\n let details = errorMessage;\r\n\r\n if (location) {\r\n const lines = processedSource.split('\\n');\r\n const lineNum = location.line || 1;\r\n const column = location.column || 0;\r\n const errorLine = lines[lineNum - 1] || '';\r\n const prevLine = lines[lineNum - 2] || '';\r\n const nextLine = lines[lineNum] || '';\r\n\r\n details = `\r\nSvelte Compile Error at line ${lineNum}, column ${column}:\r\n${errorMessage}\r\n\r\n${lineNum > 1 ? `${lineNum - 1} | ${prevLine}\\n` : ''}${lineNum} | ${errorLine}\r\n${' '.repeat(String(lineNum).length + 3 + column)}^\r\n${nextLine ? `${lineNum + 1} | ${nextLine}` : ''}\r\n`.trim();\r\n }\r\n\r\n // Check for common mistakes and add hints\r\n let hint = '';\r\n if (errorMessage.includes('Unexpected token')) {\r\n hint = '\\n\\nšŸ’” Hint: Check for missing closing tags, unclosed braces, or invalid JavaScript syntax.';\r\n } else if (errorMessage.includes('is not defined')) {\r\n hint = '\\n\\nšŸ’” Hint: Make sure all variables are declared in $props() or as local variables.';\r\n } else if (errorMessage.includes('Expected')) {\r\n hint = '\\n\\nšŸ’” Hint: There might be a syntax error in your template or script.';\r\n }\r\n\r\n const enhancedError = new Error(`[DBI-Svelte] Failed to compile component \"${dbiName}\":\\n${details}${hint}`);\r\n (enhancedError as any).originalError = compileError;\r\n (enhancedError as any).type = 'svelte-compile-error';\r\n throw enhancedError;\r\n }\r\n\r\n // Create a module context for the compiled code\r\n let html = \"\";\r\n try {\r\n const moduleContext = createModuleContext(dbi, data, ttl);\r\n const Component = evaluateCompiledComponent(compiled.js.code, moduleContext, filePath);\r\n\r\n // Svelte 5 SSR: Use render from svelte/server\r\n const { render } = require(\"svelte/server\");\r\n // Pass data properties as top-level props (Svelte 5 expects flat props object)\r\n const renderResult = render(Component, { props: data });\r\n html = renderResult.body || \"\";\r\n } catch (runtimeError: any) {\r\n // Format runtime error with helpful details\r\n const errorMessage = runtimeError.message || 'Unknown runtime error';\r\n let hint = '';\r\n\r\n if (errorMessage.includes('is not a function')) {\r\n hint = '\\n\\nšŸ’” Hint: A function you are trying to call is undefined. Check handler names.';\r\n } else if (errorMessage.includes('Cannot read properties of undefined') || errorMessage.includes('undefined is not an object')) {\r\n hint = '\\n\\nšŸ’” Hint: You are trying to access a property of an undefined value. Check your data object.';\r\n } else if (errorMessage.includes('is not defined')) {\r\n hint = '\\n\\nšŸ’” Hint: A variable is used but not declared. Make sure it is in $props() or declared locally.';\r\n }\r\n\r\n const enhancedError = new Error(`[DBI-Svelte] Runtime error in component \"${dbiName}\":\\n${errorMessage}${hint}`);\r\n (enhancedError as any).originalError = runtimeError;\r\n (enhancedError as any).type = 'svelte-runtime-error';\r\n throw enhancedError;\r\n }\r\n\r\n // For Svelte mode, inject state into interactive elements as a ref\r\n // Reuse existing ref if data already has one, otherwise create new\r\n if (data && Object.keys(data).length > 0) {\r\n let stateRefId: string;\r\n\r\n // Check if data already has a $ref (from previous render)\r\n if (data.$ref && typeof data.$ref === 'string') {\r\n stateRefId = data.$ref;\r\n // Update the existing ref's value with new data\r\n const existingRef = dbi.data.refs.get(stateRefId);\r\n if (existingRef) {\r\n existingRef.value = data;\r\n existingRef.at = Date.now(); // Refresh timestamp\r\n } else {\r\n // Ref expired or was deleted, create new one with same ID\r\n dbi.data.refs.set(stateRefId, { at: Date.now(), value: data, ttl });\r\n }\r\n } else {\r\n // Create a new ref for the state\r\n stateRefId = stuffs.randomString(8);\r\n data.$ref = stateRefId; // Store ref ID in data for future updates\r\n dbi.data.refs.set(stateRefId, { at: Date.now(), value: data, ttl });\r\n }\r\n\r\n // Add state ref to all elements with name attribute (buttons, selects)\r\n // This includes both manual names and auto-generated names from svelteParser\r\n html = html.replace(/<button([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, attrs) => {\r\n // Check if it already has data attributes\r\n if (attrs.includes('data-1:')) return match;\r\n return `<button${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n // Also handle select elements (with optional -menu suffix for Svelte compatibility)\r\n // Supports: string-select, user-select, role-select, channel-select, mentionable-select\r\n // Both with and without -menu suffix (e.g., string-select-menu or string-select)\r\n html = html.replace(/<(string-select(?:-menu)?|user-select(?:-menu)?|role-select(?:-menu)?|channel-select(?:-menu)?|mentionable-select(?:-menu)?)([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, tag, attrs) => {\r\n if (attrs.includes('data-1:')) return match;\r\n return `<${tag}${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n // Handle modal elements with name attribute\r\n html = html.replace(/<modal([^>]*name=\"[^\"]*\"[^>]*)>/g, (match, attrs) => {\r\n if (attrs.includes('data-1:')) return match;\r\n return `<modal${attrs} data-1:ref=\"${stateRefId}\">`;\r\n });\r\n }\r\n\r\n // Parse the rendered HTML to Discord components (with modal support)\r\n const parseResult = parseHTMLComponentsV2Multi(dbi, html, dbiName, { data, ttl });\r\n const components = parseResult.components;\r\n const modals = parseResult.modals;\r\n\r\n // Get source directory for resolving relative imports\r\n const path = require(\"path\");\r\n const sourceDir = filePath ? path.dirname(path.resolve(filePath)) : undefined;\r\n\r\n // Create handler context (also captures $effect callbacks)\r\n const handlerContext = createHandlerContext(componentInfo.scriptContent, data, undefined, undefined, sourceDir);\r\n const handlers = new Map<string, { handlerFn: Function, context: any }>();\r\n\r\n // Run effects on initial render\r\n handlerContext.runEffects();\r\n\r\n // Map handlers to component names\r\n componentInfo.handlers.forEach((handlerInfo, componentName) => {\r\n const handlerFn = handlerContext.handlers[handlerInfo.handlerName];\r\n if (handlerFn && typeof handlerFn === \"function\") {\r\n handlers.set(componentName, {\r\n handlerFn,\r\n context: data\r\n });\r\n }\r\n });\r\n\r\n return {\r\n components,\r\n handlers,\r\n componentInfo,\r\n modals\r\n };\r\n}\r\n\r\n/**\r\n * Create a module context for evaluating the compiled Svelte component\r\n */\r\nfunction createModuleContext(dbi: DBI<NamespaceEnums>, data: Record<string, any>, ttl: number) {\r\n return {\r\n // Store objects in refs for later retrieval in handlers\r\n // This is used internally by the parser when converting to Discord components\r\n __storeRef: (obj: any) => {\r\n let id = stuffs.randomString(8);\r\n dbi.data.refs.set(id, { at: Date.now(), value: obj, ttl });\r\n return id;\r\n },\r\n\r\n // DBI instance for advanced usage\r\n __dbi: dbi,\r\n\r\n // All data context available\r\n ...data,\r\n data, // Also expose as 'data' prop\r\n };\r\n}\r\n\r\n/**\r\n * Evaluate the compiled Svelte component code\r\n */\r\nfunction evaluateCompiledComponent(code: string, context: Record<string, any>, filePath?: string): any {\r\n try {\r\n // Load Svelte 5 internal runtime\r\n const svelteInternal = require(\"svelte/internal/server\");\r\n const path = require(\"path\");\r\n\r\n // Get the directory of the source file for resolving relative imports\r\n const sourceDir = filePath ? path.dirname(path.resolve(filePath)) : process.cwd();\r\n\r\n // Process the code to work in our context\r\n let processedCode = code;\r\n\r\n // Collect external modules to inject into sandbox\r\n const externalModules: Record<string, any> = {};\r\n\r\n // Replace svelte internal imports\r\n processedCode = processedCode.replace(\r\n /import\\s*\\*\\s*as\\s*(\\w+)\\s*from\\s*[\"']svelte\\/internal\\/server[\"'];?/g,\r\n 'const $1 = __svelteInternal;'\r\n );\r\n processedCode = processedCode.replace(\r\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']svelte\\/internal\\/server[\"'];?/g,\r\n (match, imports) => {\r\n const importList = imports.split(',').map((i: string) => i.trim());\r\n return `const { ${importList.join(', ')} } = __svelteInternal;`;\r\n }\r\n );\r\n\r\n // Handle external module imports (default imports)\r\n processedCode = processedCode.replace(\r\n /import\\s+(\\w+)\\s+from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, varName, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n // Resolve relative paths from source file directory\r\n const resolvedPath = modulePath.startsWith('.')\r\n ? path.resolve(sourceDir, modulePath)\r\n : modulePath;\r\n const mod = require(resolvedPath);\r\n externalModules[varName] = mod.default || mod;\r\n return `const ${varName} = __externalModules.${varName};`;\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Handle named imports from external modules\r\n processedCode = processedCode.replace(\r\n /import\\s*\\{([^}]+)\\}\\s*from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, imports, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n // Resolve relative paths from source file directory\r\n const resolvedPath = modulePath.startsWith('.')\r\n ? path.resolve(sourceDir, modulePath)\r\n : modulePath;\r\n const mod = require(resolvedPath);\r\n const importList = imports.split(',').map((i: string) => i.trim());\r\n importList.forEach((importName: string) => {\r\n const [name, alias] = importName.split(' as ').map(s => s.trim());\r\n externalModules[alias || name] = mod[name] || mod.default?.[name];\r\n });\r\n return importList.map((importName: string) => {\r\n const [name, alias] = importName.split(' as ').map(s => s.trim());\r\n return `const ${alias || name} = __externalModules.${alias || name};`;\r\n }).join('\\n');\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Handle namespace imports from external modules\r\n processedCode = processedCode.replace(\r\n /import\\s*\\*\\s*as\\s*(\\w+)\\s*from\\s*[\"']([^\"']+)[\"'];?/g,\r\n (match, varName, modulePath) => {\r\n // Skip svelte imports\r\n if (modulePath.startsWith('svelte')) return '';\r\n try {\r\n // Resolve relative paths from source file directory\r\n const resolvedPath = modulePath.startsWith('.')\r\n ? path.resolve(sourceDir, modulePath)\r\n : modulePath;\r\n const mod = require(resolvedPath);\r\n externalModules[varName] = mod;\r\n return `const ${varName} = __externalModules.${varName};`;\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n );\r\n\r\n // Remove any remaining import statements\r\n processedCode = processedCode\r\n .split('\\n')\r\n .filter(line => !line.trim().startsWith('import '))\r\n .join('\\n');\r\n\r\n // Replace 'export default' with assignment\r\n processedCode = processedCode.replace(/export\\s+default\\s+/g, '__exports.default = ');\r\n // Replace 'export function' with assignment\r\n processedCode = processedCode.replace(/export\\s+function\\s+(\\w+)/g, '__exports.$1 = function $1');\r\n // Replace 'export const' with assignment\r\n processedCode = processedCode.replace(/export\\s+const\\s+(\\w+)/g, '__exports.$1 = ');\r\n // Replace 'export let' with assignment \r\n processedCode = processedCode.replace(/export\\s+let\\s+(\\w+)/g, '__exports.$1 = ');\r\n\r\n // Create the sandbox context\r\n const __exports: any = {};\r\n // Svelte lifecycle functions - no-ops for SSR\r\n const svelteLifecycle = {\r\n onMount: () => () => { }, // Returns cleanup function\r\n onDestroy: () => { },\r\n beforeUpdate: () => { },\r\n afterUpdate: () => { },\r\n tick: () => Promise.resolve(),\r\n untrack: (fn: () => any) => fn(),\r\n createEventDispatcher: () => () => { },\r\n };\r\n\r\n // Note: Svelte 5 runes ($state, $derived, etc.) are compile-time features\r\n // The compiler transforms them, so we don't need runtime implementations.\r\n // The `$` variable is used by compiled code as the svelte/internal/server namespace.\r\n\r\n const sandbox = {\r\n __svelteInternal: svelteInternal,\r\n __externalModules: externalModules,\r\n $: svelteInternal, // Direct alias for compiled Svelte code that uses `$`\r\n __exports,\r\n console,\r\n ...svelteLifecycle,\r\n ...context,\r\n };\r\n\r\n // Wrap code in IIFE\r\n const wrappedCode = `\r\n (function() {\r\n ${processedCode}\r\n })();\r\n `;\r\n\r\n // Run in VM context for better isolation\r\n vm.createContext(sandbox);\r\n vm.runInContext(wrappedCode, sandbox);\r\n\r\n // Return the component\r\n const Component = sandbox.__exports.default;\r\n\r\n if (!Component) {\r\n throw new Error(\"Svelte component did not export a default component\");\r\n }\r\n\r\n return Component;\r\n } catch (error) {\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Render a Svelte component from a file\r\n */\r\nexport async function renderSvelteComponentFromFile(\r\n dbi: DBI<NamespaceEnums>,\r\n filePath: string,\r\n dbiName: string,\r\n options: SvelteRenderOptions = {}\r\n): Promise<SvelteRenderResult> {\r\n const fs = require(\"fs\");\r\n const source = fs.readFileSync(filePath, \"utf-8\");\r\n // Pass filePath to options for resolving relative imports\r\n return await renderSvelteComponent(dbi, source, dbiName, { ...options, filePath });\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function add(a: number, b: number): number;
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../test/test.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.add = add;
4
+ function add(a, b) {
5
+ return a + b;
6
+ }
7
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../test/test.ts"],"names":[],"mappings":";;AAAA,kBAEC;AAFD,SAAgB,GAAG,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC","sourcesContent":["export function add(a: number, b: number): number {\r\n return a + b;\r\n}"]}
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "tslib": "^2.6.3"
16
16
  },
17
17
  "name": "@mostfeatured/dbi",
18
- "version": "0.2.15",
18
+ "version": "0.2.16",
19
19
  "main": "dist/src/index.js",
20
20
  "types": "dist/src/index.d.ts",
21
21
  "typesVersions": {
@@ -186,6 +186,8 @@ export class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIB
186
186
  mode: 'svelte' | 'eta' = 'eta';
187
187
  private svelteComponentInfo: any = null;
188
188
  private _userOnExecute?: (ctx: IDBIHTMLComponentsV2ExecuteCtx<TNamespace>) => void;
189
+ /** The directory of the source file (used for resolving relative imports) */
190
+ private _sourceDir?: string;
189
191
 
190
192
  // Store handler contexts per ref for lifecycle management
191
193
  // Key: ref id, Value: handlerContext with lifecycle hooks
@@ -216,6 +218,12 @@ export class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIB
216
218
  this.handlers = args.handlers || [];
217
219
  this.mode = args.mode || 'eta';
218
220
 
221
+ // Store source directory for resolving relative imports in Svelte components
222
+ if (this.file) {
223
+ const path = require("path");
224
+ this._sourceDir = path.dirname(path.resolve(this.file));
225
+ }
226
+
219
227
  // Store user's onExecute callback if provided
220
228
  if (userOnExecute) {
221
229
  this._userOnExecute = userOnExecute;
@@ -316,7 +324,8 @@ export class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIB
316
324
  this.svelteComponentInfo!.scriptContent,
317
325
  typeof currentState === 'object' ? currentState : {},
318
326
  this,
319
- ctx
327
+ ctx,
328
+ this._sourceDir
320
329
  );
321
330
 
322
331
  const handlerFn = handlerContext.handlers[handlerName];
@@ -381,7 +390,8 @@ export class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIB
381
390
  this.svelteComponentInfo!.scriptContent,
382
391
  typeof currentState === 'object' ? currentState : {},
383
392
  this,
384
- ctx
393
+ ctx,
394
+ this._sourceDir
385
395
  );
386
396
 
387
397
  const handlerFn = handlerContext.handlers[handlerInfo.handlerName];
@@ -564,7 +574,8 @@ export class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIB
564
574
  this.svelteComponentInfo.scriptContent,
565
575
  data,
566
576
  this,
567
- fakeCtx
577
+ fakeCtx,
578
+ this._sourceDir
568
579
  );
569
580
 
570
581
  // Store the context for lifecycle management
@@ -705,14 +705,19 @@ function parseImports(script: string): { imports: ImportInfo[]; cleanedScript: s
705
705
  /**
706
706
  * Load modules and create injection variables
707
707
  */
708
- function loadModules(imports: ImportInfo[]): { modules: Record<string, any>; varDeclarations: string } {
708
+ function loadModules(imports: ImportInfo[], sourceDir?: string): { modules: Record<string, any>; varDeclarations: string } {
709
709
  const modules: Record<string, any> = {};
710
710
  const declarations: string[] = [];
711
+ const path = require("path");
711
712
 
712
713
  for (const importInfo of imports) {
713
714
  try {
715
+ // Resolve relative paths from source file directory
716
+ const resolvedPath = importInfo.moduleName.startsWith('.') && sourceDir
717
+ ? path.resolve(sourceDir, importInfo.moduleName)
718
+ : importInfo.moduleName;
714
719
  // Try to require the module
715
- const mod = require(importInfo.moduleName);
720
+ const mod = require(resolvedPath);
716
721
 
717
722
  if (importInfo.isDefault && importInfo.defaultName) {
718
723
  // Default or namespace import
@@ -737,15 +742,16 @@ function loadModules(imports: ImportInfo[]): { modules: Record<string, any>; var
737
742
  /**
738
743
  * Create a handler context from script content
739
744
  * This evaluates the Svelte script and returns the handler functions and effects
745
+ * @param sourceDir - The directory of the source file (used for resolving relative imports)
740
746
  */
741
- export function createHandlerContext(scriptContent: string, initialData: Record<string, any> = {}, component?: any, ctx?: any): HandlerContextResult {
747
+ export function createHandlerContext(scriptContent: string, initialData: Record<string, any> = {}, component?: any, ctx?: any, sourceDir?: string): HandlerContextResult {
742
748
  const handlers: Record<string, Function> = {};
743
749
  const effects: Function[] = [];
744
750
 
745
751
  try {
746
752
  // Parse and extract imports first
747
753
  const { imports, cleanedScript } = parseImports(scriptContent);
748
- const { modules, varDeclarations } = loadModules(imports);
754
+ const { modules, varDeclarations } = loadModules(imports, sourceDir);
749
755
 
750
756
  // Extract only function declarations from the script
751
757
  const functionNames = extractFunctionNames(cleanedScript);
@@ -11,6 +11,8 @@ export interface SvelteRenderOptions {
11
11
  ttl?: number;
12
12
  /** If true, skips validation warnings (useful for production) */
13
13
  skipValidation?: boolean;
14
+ /** The file path of the Svelte component (used for resolving relative imports) */
15
+ filePath?: string;
14
16
  }
15
17
 
16
18
  export interface ModalDefinition {
@@ -37,7 +39,7 @@ export async function renderSvelteComponent(
37
39
  dbiName: string,
38
40
  options: SvelteRenderOptions = {}
39
41
  ): Promise<SvelteRenderResult> {
40
- const { data = {}, ttl = 0, skipValidation = false } = options;
42
+ const { data = {}, ttl = 0, skipValidation = false, filePath } = options;
41
43
 
42
44
  // Parse the Svelte component to extract handlers
43
45
  // This also injects auto-generated names into elements without name attribute
@@ -106,7 +108,7 @@ ${nextLine ? `${lineNum + 1} | ${nextLine}` : ''}
106
108
  let html = "";
107
109
  try {
108
110
  const moduleContext = createModuleContext(dbi, data, ttl);
109
- const Component = evaluateCompiledComponent(compiled.js.code, moduleContext);
111
+ const Component = evaluateCompiledComponent(compiled.js.code, moduleContext, filePath);
110
112
 
111
113
  // Svelte 5 SSR: Use render from svelte/server
112
114
  const { render } = require("svelte/server");
@@ -182,8 +184,12 @@ ${nextLine ? `${lineNum + 1} | ${nextLine}` : ''}
182
184
  const components = parseResult.components;
183
185
  const modals = parseResult.modals;
184
186
 
187
+ // Get source directory for resolving relative imports
188
+ const path = require("path");
189
+ const sourceDir = filePath ? path.dirname(path.resolve(filePath)) : undefined;
190
+
185
191
  // Create handler context (also captures $effect callbacks)
186
- const handlerContext = createHandlerContext(componentInfo.scriptContent, data);
192
+ const handlerContext = createHandlerContext(componentInfo.scriptContent, data, undefined, undefined, sourceDir);
187
193
  const handlers = new Map<string, { handlerFn: Function, context: any }>();
188
194
 
189
195
  // Run effects on initial render
@@ -233,10 +239,14 @@ function createModuleContext(dbi: DBI<NamespaceEnums>, data: Record<string, any>
233
239
  /**
234
240
  * Evaluate the compiled Svelte component code
235
241
  */
236
- function evaluateCompiledComponent(code: string, context: Record<string, any>): any {
242
+ function evaluateCompiledComponent(code: string, context: Record<string, any>, filePath?: string): any {
237
243
  try {
238
244
  // Load Svelte 5 internal runtime
239
245
  const svelteInternal = require("svelte/internal/server");
246
+ const path = require("path");
247
+
248
+ // Get the directory of the source file for resolving relative imports
249
+ const sourceDir = filePath ? path.dirname(path.resolve(filePath)) : process.cwd();
240
250
 
241
251
  // Process the code to work in our context
242
252
  let processedCode = code;
@@ -264,7 +274,11 @@ function evaluateCompiledComponent(code: string, context: Record<string, any>):
264
274
  // Skip svelte imports
265
275
  if (modulePath.startsWith('svelte')) return '';
266
276
  try {
267
- const mod = require(modulePath);
277
+ // Resolve relative paths from source file directory
278
+ const resolvedPath = modulePath.startsWith('.')
279
+ ? path.resolve(sourceDir, modulePath)
280
+ : modulePath;
281
+ const mod = require(resolvedPath);
268
282
  externalModules[varName] = mod.default || mod;
269
283
  return `const ${varName} = __externalModules.${varName};`;
270
284
  } catch (e) {
@@ -280,7 +294,11 @@ function evaluateCompiledComponent(code: string, context: Record<string, any>):
280
294
  // Skip svelte imports
281
295
  if (modulePath.startsWith('svelte')) return '';
282
296
  try {
283
- const mod = require(modulePath);
297
+ // Resolve relative paths from source file directory
298
+ const resolvedPath = modulePath.startsWith('.')
299
+ ? path.resolve(sourceDir, modulePath)
300
+ : modulePath;
301
+ const mod = require(resolvedPath);
284
302
  const importList = imports.split(',').map((i: string) => i.trim());
285
303
  importList.forEach((importName: string) => {
286
304
  const [name, alias] = importName.split(' as ').map(s => s.trim());
@@ -303,7 +321,11 @@ function evaluateCompiledComponent(code: string, context: Record<string, any>):
303
321
  // Skip svelte imports
304
322
  if (modulePath.startsWith('svelte')) return '';
305
323
  try {
306
- const mod = require(modulePath);
324
+ // Resolve relative paths from source file directory
325
+ const resolvedPath = modulePath.startsWith('.')
326
+ ? path.resolve(sourceDir, modulePath)
327
+ : modulePath;
328
+ const mod = require(resolvedPath);
307
329
  externalModules[varName] = mod;
308
330
  return `const ${varName} = __externalModules.${varName};`;
309
331
  } catch (e) {
@@ -389,5 +411,6 @@ export async function renderSvelteComponentFromFile(
389
411
  ): Promise<SvelteRenderResult> {
390
412
  const fs = require("fs");
391
413
  const source = fs.readFileSync(filePath, "utf-8");
392
- return await renderSvelteComponent(dbi, source, dbiName, options);
414
+ // Pass filePath to options for resolving relative imports
415
+ return await renderSvelteComponent(dbi, source, dbiName, { ...options, filePath });
393
416
  }
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  /// <reference types="@mostfeatured/dbi/svelte" />
3
3
  import stuffs from "stuffs";
4
+ import { add } from "./test.js";
4
5
 
5
6
  let {
6
7
  products = [],
@@ -258,6 +259,8 @@
258
259
  }
259
260
 
260
261
  onMount(() => {
262
+ console.log(add(2, 3)); // Test the imported function
263
+
261
264
  data.elapsedTime = 0;
262
265
  const interval = setInterval(() => {
263
266
  // Use lowPriorityUpdate to skip render if a user interaction is in progress
package/test/test.ts ADDED
@@ -0,0 +1,3 @@
1
+ export function add(a: number, b: number): number {
2
+ return a + b;
3
+ }