@mostfeatured/dbi 0.2.10 → 0.2.11

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.d.ts","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/svelteRenderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAA8C,mBAAmB,EAAwB,MAAM,gBAAgB,CAAC;AAIvH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA8F7B;AA4KD;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAI7B"}
1
+ {"version":3,"file":"svelteRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/svelteRenderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAA8C,mBAAmB,EAAwB,MAAM,gBAAgB,CAAC;AAIvH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA+F7B;AA4KD;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAI7B"}
@@ -31,7 +31,8 @@ async function renderSvelteComponent(dbi, source, dbiName, options = {}) {
31
31
  const Component = evaluateCompiledComponent(compiled.js.code, moduleContext);
32
32
  // Svelte 5 SSR: Use render from svelte/server
33
33
  const { render } = require("svelte/server");
34
- const renderResult = render(Component, { props: { ...data, data } });
34
+ // Pass data properties as top-level props (Svelte 5 expects flat props object)
35
+ const renderResult = render(Component, { props: data });
35
36
  html = renderResult.body || "";
36
37
  }
37
38
  catch (error) {
@@ -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 } from \"./parser\";\r\nimport { parseSvelteComponent, createHandlerContext, SvelteComponentInfo, HandlerContextResult } 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}\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}\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 } = 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 // 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 const compiled = compile(processedSource, {\r\n generate: \"server\",\r\n css: \"injected\",\r\n dev: false,\r\n } as any);\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 const renderResult = render(Component, { props: { ...data, data } });\r\n html = renderResult.body || \"\";\r\n } catch (error) {\r\n throw error;\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 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\r\n html = html.replace(/<(string-select|user-select|role-select|channel-select|mentionable-select)([^>]*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 }\r\n\r\n // Parse the rendered HTML to Discord components\r\n const components = parseHTMLComponentsV2(dbi, html, dbiName, { data, ttl });\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 };\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 } from \"./parser\";\r\nimport { parseSvelteComponent, createHandlerContext, SvelteComponentInfo, HandlerContextResult } 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}\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}\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 } = 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 // 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 const compiled = compile(processedSource, {\r\n generate: \"server\",\r\n css: \"injected\",\r\n dev: false,\r\n } as any);\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 (error) {\r\n throw error;\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 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\r\n html = html.replace(/<(string-select|user-select|role-select|channel-select|mentionable-select)([^>]*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 }\r\n\r\n // Parse the rendered HTML to Discord components\r\n const components = parseHTMLComponentsV2(dbi, html, dbiName, { data, ttl });\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 };\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"]}
@@ -5,7 +5,7 @@ const src_1 = require("../src");
5
5
  const path_1 = tslib_1.__importDefault(require("path"));
6
6
  const dbi = (0, src_1.createDBI)("svelte", {
7
7
  discord: {
8
- token: "ODI0MjEwMTMyMzUwMDA5MzY2.GFvvpD.FsVgZH6oNtUYTapngDjurqCBovx5cpQ4ErwsKg",
8
+ token: "YOUR_BOT_TOKEN_HERE",
9
9
  options: {
10
10
  intents: [
11
11
  "GuildMessages",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createDBI } from \"../src\";\r\nimport path from \"path\";\r\n\r\nconst dbi = createDBI(\"svelte\", {\r\n discord: {\r\n token: \"ODI0MjEwMTMyMzUwMDA5MzY2.GFvvpD.FsVgZH6oNtUYTapngDjurqCBovx5cpQ4ErwsKg\",\r\n options: {\r\n intents: [\r\n \"GuildMessages\",\r\n \"Guilds\",\r\n \"MessageContent\",\r\n \"GuildMessageReactions\"\r\n ],\r\n }\r\n },\r\n references: {\r\n autoClear: {\r\n ttl: 60000 * 60, // 60 minutes\r\n check: 60000 // every 60 seconds\r\n }\r\n }\r\n});\r\n\r\ndbi.register(({ ChatInput, HTMLComponentsV2 }) => {\r\n // Svelte product showcase with Components V2\r\n HTMLComponentsV2({\r\n name: \"product-showcase\",\r\n mode: 'svelte',\r\n file: path.join(__dirname, \"product-showcase.svelte\")\r\n });\r\n\r\n // Test command\r\n ChatInput({\r\n name: \"test-svelte\",\r\n description: \"Test Svelte product showcase\",\r\n async onExecute({ interaction, dbi }) {\r\n const showcase = dbi.interaction(\"product-showcase\") as any;\r\n\r\n const products = [\r\n {\r\n name: \"Gaming Keyboard\",\r\n description: \"RGB mechanical keyboard with Cherry MX switches\",\r\n price: 149,\r\n image: \"https://cdn.discordapp.com/embed/avatars/0.png\",\r\n category: \"Electronics\",\r\n rating: 4.8,\r\n stock: 25\r\n },\r\n {\r\n name: \"Wireless Mouse\",\r\n description: \"Ergonomic wireless mouse with 16000 DPI sensor\",\r\n price: 79,\r\n image: \"https://cdn.discordapp.com/embed/avatars/1.png\",\r\n category: \"Electronics\",\r\n rating: 4.5,\r\n stock: 42\r\n },\r\n {\r\n name: \"USB-C Hub\",\r\n description: \"7-in-1 USB-C hub with HDMI, USB 3.0, and SD card reader\",\r\n price: 59,\r\n image: \"https://cdn.discordapp.com/embed/avatars/2.png\",\r\n category: \"Accessories\",\r\n rating: 4.3,\r\n stock: 18\r\n },\r\n {\r\n name: \"Monitor Stand\",\r\n description: \"Adjustable monitor stand with cable management\",\r\n price: 89,\r\n image: \"https://cdn.discordapp.com/embed/avatars/3.png\",\r\n category: \"Furniture\",\r\n rating: 4.6,\r\n stock: 31\r\n }\r\n ];\r\n\r\n // Use send() method - this sends the message AND initializes lifecycle hooks (onMount)\r\n // The interval in onMount will start immediately after the message is sent\r\n await showcase.send(interaction, {\r\n data: {\r\n products,\r\n currentIndex: 0,\r\n cart: [],\r\n view: 'browse',\r\n elapsedTime: 0\r\n }\r\n });\r\n }\r\n });\r\n});\r\n\r\nsetTimeout(() => {\r\n console.log(\"Loading DBI...\");\r\n dbi.load().then(() => {\r\n dbi.publish(\"Guild\", \"1341841733511806978\")\r\n console.log(\"DBI loaded.\");\r\n dbi.login().then(() => {\r\n console.log(\"Bot is running with Svelte components!\");\r\n });\r\n });\r\n}, 100);"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../test/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createDBI } from \"../src\";\r\nimport path from \"path\";\r\n\r\nconst dbi = createDBI(\"svelte\", {\r\n discord: {\r\n token: \"YOUR_BOT_TOKEN_HERE\",\r\n options: {\r\n intents: [\r\n \"GuildMessages\",\r\n \"Guilds\",\r\n \"MessageContent\",\r\n \"GuildMessageReactions\"\r\n ],\r\n }\r\n },\r\n references: {\r\n autoClear: {\r\n ttl: 60000 * 60, // 60 minutes\r\n check: 60000 // every 60 seconds\r\n }\r\n }\r\n});\r\n\r\ndbi.register(({ ChatInput, HTMLComponentsV2 }) => {\r\n // Svelte product showcase with Components V2\r\n HTMLComponentsV2({\r\n name: \"product-showcase\",\r\n mode: 'svelte',\r\n file: path.join(__dirname, \"product-showcase.svelte\")\r\n });\r\n\r\n // Test command\r\n ChatInput({\r\n name: \"test-svelte\",\r\n description: \"Test Svelte product showcase\",\r\n async onExecute({ interaction, dbi }) {\r\n const showcase = dbi.interaction(\"product-showcase\") as any;\r\n\r\n const products = [\r\n {\r\n name: \"Gaming Keyboard\",\r\n description: \"RGB mechanical keyboard with Cherry MX switches\",\r\n price: 149,\r\n image: \"https://cdn.discordapp.com/embed/avatars/0.png\",\r\n category: \"Electronics\",\r\n rating: 4.8,\r\n stock: 25\r\n },\r\n {\r\n name: \"Wireless Mouse\",\r\n description: \"Ergonomic wireless mouse with 16000 DPI sensor\",\r\n price: 79,\r\n image: \"https://cdn.discordapp.com/embed/avatars/1.png\",\r\n category: \"Electronics\",\r\n rating: 4.5,\r\n stock: 42\r\n },\r\n {\r\n name: \"USB-C Hub\",\r\n description: \"7-in-1 USB-C hub with HDMI, USB 3.0, and SD card reader\",\r\n price: 59,\r\n image: \"https://cdn.discordapp.com/embed/avatars/2.png\",\r\n category: \"Accessories\",\r\n rating: 4.3,\r\n stock: 18\r\n },\r\n {\r\n name: \"Monitor Stand\",\r\n description: \"Adjustable monitor stand with cable management\",\r\n price: 89,\r\n image: \"https://cdn.discordapp.com/embed/avatars/3.png\",\r\n category: \"Furniture\",\r\n rating: 4.6,\r\n stock: 31\r\n }\r\n ];\r\n\r\n // Use send() method - this sends the message AND initializes lifecycle hooks (onMount)\r\n // The interval in onMount will start immediately after the message is sent\r\n await showcase.send(interaction, {\r\n data: {\r\n products,\r\n currentIndex: 0,\r\n cart: [],\r\n view: 'browse',\r\n elapsedTime: 0\r\n }\r\n });\r\n }\r\n });\r\n});\r\n\r\nsetTimeout(() => {\r\n console.log(\"Loading DBI...\");\r\n dbi.load().then(() => {\r\n dbi.publish(\"Guild\", \"1341841733511806978\")\r\n console.log(\"DBI loaded.\");\r\n dbi.login().then(() => {\r\n console.log(\"Bot is running with Svelte components!\");\r\n });\r\n });\r\n}, 100);"]}
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.10",
18
+ "version": "0.2.11",
19
19
  "main": "dist/src/index.js",
20
20
  "types": "dist/src/index.d.ts",
21
21
  "typesVersions": {
@@ -50,7 +50,8 @@ export async function renderSvelteComponent(
50
50
 
51
51
  // Svelte 5 SSR: Use render from svelte/server
52
52
  const { render } = require("svelte/server");
53
- const renderResult = render(Component, { props: { ...data, data } });
53
+ // Pass data properties as top-level props (Svelte 5 expects flat props object)
54
+ const renderResult = render(Component, { props: data });
54
55
  html = renderResult.body || "";
55
56
  } catch (error) {
56
57
  throw error;
package/test/index.ts CHANGED
@@ -3,7 +3,7 @@ import path from "path";
3
3
 
4
4
  const dbi = createDBI("svelte", {
5
5
  discord: {
6
- token: "ODI0MjEwMTMyMzUwMDA5MzY2.GFvvpD.FsVgZH6oNtUYTapngDjurqCBovx5cpQ4ErwsKg",
6
+ token: "YOUR_BOT_TOKEN_HERE",
7
7
  options: {
8
8
  intents: [
9
9
  "GuildMessages",