@vistagenic/vista 0.2.16 → 0.3.2

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.
Files changed (153) hide show
  1. package/bin/vista.js +184 -177
  2. package/dist/ai/agent.d.ts +37 -0
  3. package/dist/ai/agent.js +385 -0
  4. package/dist/ai/embeddings.d.ts +11 -0
  5. package/dist/ai/embeddings.js +71 -0
  6. package/dist/ai/index.d.ts +10 -0
  7. package/dist/ai/index.js +26 -0
  8. package/dist/ai/memory.d.ts +16 -0
  9. package/dist/ai/memory.js +39 -0
  10. package/dist/ai/observability.d.ts +21 -0
  11. package/dist/ai/observability.js +69 -0
  12. package/dist/ai/providers/anthropic.d.ts +2 -0
  13. package/dist/ai/providers/anthropic.js +190 -0
  14. package/dist/ai/providers/base.d.ts +7 -0
  15. package/dist/ai/providers/base.js +85 -0
  16. package/dist/ai/providers/gemini.d.ts +2 -0
  17. package/dist/ai/providers/gemini.js +194 -0
  18. package/dist/ai/providers/index.d.ts +5 -0
  19. package/dist/ai/providers/index.js +21 -0
  20. package/dist/ai/providers/mock.d.ts +8 -0
  21. package/dist/ai/providers/mock.js +77 -0
  22. package/dist/ai/providers/openai.d.ts +2 -0
  23. package/dist/ai/providers/openai.js +211 -0
  24. package/dist/ai/rag.d.ts +35 -0
  25. package/dist/ai/rag.js +110 -0
  26. package/dist/ai/react/index.d.ts +1 -0
  27. package/dist/ai/react/index.js +17 -0
  28. package/dist/ai/react/react-server.d.ts +1 -0
  29. package/dist/ai/react/react-server.js +17 -0
  30. package/dist/ai/react/use-agent.d.ts +23 -0
  31. package/dist/ai/react/use-agent.js +138 -0
  32. package/dist/ai/stream.d.ts +24 -0
  33. package/dist/ai/stream.js +109 -0
  34. package/dist/ai/tool.d.ts +11 -0
  35. package/dist/ai/tool.js +47 -0
  36. package/dist/ai/types.d.ts +117 -0
  37. package/dist/ai/types.js +5 -0
  38. package/dist/auth/core.d.ts +140 -0
  39. package/dist/auth/core.js +165 -0
  40. package/dist/auth/index.d.ts +20 -8
  41. package/dist/auth/index.js +369 -16
  42. package/dist/auth/react-server.d.ts +1 -0
  43. package/dist/auth/react-server.js +10 -0
  44. package/dist/auth/react.d.ts +18 -0
  45. package/dist/auth/react.js +71 -0
  46. package/dist/bin/build-rsc.js +602 -604
  47. package/dist/bin/build.js +389 -388
  48. package/dist/bin/deploy-output.d.ts +2 -7
  49. package/dist/bin/deploy-output.js +3 -76
  50. package/dist/bin/deploy.d.ts +7 -0
  51. package/dist/bin/deploy.js +102 -0
  52. package/dist/bin/dev-error-overlay-snippet.js +778 -552
  53. package/dist/bin/devtools-indicator-snippet.js +387 -387
  54. package/dist/bin/generate.js +510 -248
  55. package/dist/build/manifest.d.ts +169 -139
  56. package/dist/build/manifest.js +423 -367
  57. package/dist/build/rsc/client-manifest.d.ts +62 -52
  58. package/dist/build/rsc/client-manifest.js +295 -193
  59. package/dist/build/rsc/client-reference-plugin.d.ts +37 -37
  60. package/dist/build/rsc/client-reference-plugin.js +160 -160
  61. package/dist/build/rsc/native-scanner.d.ts +135 -123
  62. package/dist/build/rsc/native-scanner.js +203 -170
  63. package/dist/build/rsc/react-client-reference-manifest.d.ts +28 -22
  64. package/dist/build/rsc/react-client-reference-manifest.js +240 -219
  65. package/dist/build/rsc/rsc-renderer.d.ts +99 -99
  66. package/dist/build/rsc/rsc-renderer.js +263 -263
  67. package/dist/build/rsc/server-component-loader.d.ts +19 -19
  68. package/dist/build/rsc/server-component-loader.js +91 -91
  69. package/dist/build/rsc/server-manifest.d.ts +17 -0
  70. package/dist/build/rsc/server-manifest.js +20 -0
  71. package/dist/build/standalone.js +337 -334
  72. package/dist/build/webpack/plugins/vista-flight-plugin.js +5 -5
  73. package/dist/client/dynamic.react-server.d.ts +2 -0
  74. package/dist/client/dynamic.react-server.js +23 -0
  75. package/dist/client/link.react-server.d.ts +2 -0
  76. package/dist/client/link.react-server.js +11 -0
  77. package/dist/client/navigation.react-server.d.ts +1 -0
  78. package/dist/client/navigation.react-server.js +17 -0
  79. package/dist/client/router.react-server.d.ts +1 -0
  80. package/dist/client/router.react-server.js +17 -0
  81. package/dist/client/rsc-router.react-server.d.ts +1 -0
  82. package/dist/client/rsc-router.react-server.js +17 -0
  83. package/dist/client/script.react-server.d.ts +2 -0
  84. package/dist/client/script.react-server.js +23 -0
  85. package/dist/components/client-island.d.ts +34 -34
  86. package/dist/components/client-island.js +75 -75
  87. package/dist/config.d.ts +17 -0
  88. package/dist/config.js +60 -1
  89. package/dist/deploy/adapters/cloudflare.d.ts +2 -0
  90. package/dist/deploy/adapters/cloudflare.js +124 -0
  91. package/dist/deploy/adapters/docker.d.ts +2 -0
  92. package/dist/deploy/adapters/docker.js +112 -0
  93. package/dist/deploy/adapters/index.d.ts +15 -0
  94. package/dist/deploy/adapters/index.js +24 -0
  95. package/dist/deploy/adapters/netlify.d.ts +2 -0
  96. package/dist/deploy/adapters/netlify.js +115 -0
  97. package/dist/deploy/adapters/render.d.ts +2 -0
  98. package/dist/deploy/adapters/render.js +95 -0
  99. package/dist/deploy/adapters/vercel.d.ts +7 -0
  100. package/dist/deploy/adapters/vercel.js +164 -0
  101. package/dist/deploy/cli-runner.d.ts +8 -0
  102. package/dist/deploy/cli-runner.js +58 -0
  103. package/dist/deploy/detect.d.ts +6 -0
  104. package/dist/deploy/detect.js +77 -0
  105. package/dist/deploy/index.d.ts +24 -0
  106. package/dist/deploy/index.js +112 -0
  107. package/dist/deploy/preflight.d.ts +8 -0
  108. package/dist/deploy/preflight.js +80 -0
  109. package/dist/deploy/types.d.ts +48 -0
  110. package/dist/deploy/types.js +2 -0
  111. package/dist/deploy/utils.d.ts +18 -0
  112. package/dist/deploy/utils.js +70 -0
  113. package/dist/dev-error.d.ts +14 -0
  114. package/dist/dev-error.js +1763 -705
  115. package/dist/index.d.ts +23 -21
  116. package/dist/index.js +61 -57
  117. package/dist/server/cookie-parse.d.ts +4 -0
  118. package/dist/server/cookie-parse.js +14 -0
  119. package/dist/server/engine.js +7 -26
  120. package/dist/server/index.d.ts +109 -102
  121. package/dist/server/index.js +315 -286
  122. package/dist/server/middleware-runner.d.ts +125 -57
  123. package/dist/server/middleware-runner.js +615 -218
  124. package/dist/server/middleware-security.d.ts +36 -0
  125. package/dist/server/middleware-security.js +183 -0
  126. package/dist/server/module-compile-hook.js +695 -662
  127. package/dist/server/route-handler-registry.d.ts +65 -0
  128. package/dist/server/route-handler-registry.js +195 -0
  129. package/dist/server/route-patterns.d.ts +67 -0
  130. package/dist/server/route-patterns.js +186 -0
  131. package/dist/server/rsc-engine.js +75 -92
  132. package/dist/server/rsc-module-system.d.ts +33 -33
  133. package/dist/server/rsc-module-system.js +87 -87
  134. package/dist/server/rsc-upstream.js +892 -888
  135. package/dist/server/static-generator.js +10 -10
  136. package/dist/server/typed-api-runtime.d.ts +18 -0
  137. package/dist/server/typed-api-runtime.js +635 -507
  138. package/dist/server/vista-import-map.js +134 -123
  139. package/dist/stack/index.d.ts +34 -32
  140. package/dist/stack/index.js +49 -45
  141. package/dist/stack/server/caller.d.ts +13 -0
  142. package/dist/stack/server/caller.js +42 -0
  143. package/dist/stack/server/executor.d.ts +40 -36
  144. package/dist/stack/server/executor.js +222 -174
  145. package/dist/stack/server/index.d.ts +11 -10
  146. package/dist/stack/server/index.js +24 -23
  147. package/dist/stack/server/procedure.d.ts +20 -18
  148. package/dist/stack/server/procedure.js +66 -58
  149. package/dist/stack/server/types.d.ts +113 -100
  150. package/dist/theme/react-server.d.ts +10 -0
  151. package/dist/theme/react-server.js +16 -0
  152. package/package.json +28 -3
  153. package/LICENSE +0 -21
@@ -1,73 +1,73 @@
1
- "use strict";
2
- /**
3
- * Vista Server Component Loader
4
- *
5
- * Webpack loader that transforms server component imports in client bundles.
6
- *
7
- * When a server component is imported in a client bundle:
8
- * 1. The loader detects if the file has 'use client' directive
9
- * 2. If NOT a client component, replace the module with a proxy
10
- * 3. The proxy provides helpful error messages when misused
11
- */
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.default = serverComponentLoader;
17
- const path_1 = __importDefault(require("path"));
18
- /**
19
- * Check if source has 'use client' directive
20
- */
21
- function hasClientDirective(source) {
22
- const trimmed = source.trim();
23
- return trimmed.startsWith("'use client'") || trimmed.startsWith('"use client"');
24
- }
25
- /**
26
- * Extract the component name from exports
27
- */
28
- function extractComponentName(source) {
29
- // Try to find "export default function ComponentName" or "export default ComponentName"
30
- const defaultFuncMatch = source.match(/export\s+default\s+function\s+([A-Z][a-zA-Z0-9_]*)/);
31
- if (defaultFuncMatch)
32
- return defaultFuncMatch[1];
33
- const defaultClassMatch = source.match(/export\s+default\s+class\s+([A-Z][a-zA-Z0-9_]*)/);
34
- if (defaultClassMatch)
35
- return defaultClassMatch[1];
36
- const defaultConstMatch = source.match(/export\s+default\s+([A-Z][a-zA-Z0-9_]*)/);
37
- if (defaultConstMatch)
38
- return defaultConstMatch[1];
39
- return 'ServerComponent';
40
- }
41
- /**
42
- * Server Component Loader
43
- */
44
- function serverComponentLoader(source) {
45
- const options = this.getOptions();
46
- const resourcePath = this.resourcePath;
47
- // Only process files in the app directory
48
- if (!resourcePath.startsWith(options.appDir)) {
49
- return source;
50
- }
51
- // If this IS a client component, pass through unchanged
52
- if (hasClientDirective(source)) {
53
- return source;
54
- }
55
- // This is a server component - we need to check how it's being used
56
- //
57
- // The key insight: we're building the CLIENT bundle here.
58
- // Server components should NOT be in the client bundle at all.
59
- //
60
- // However, there are valid use cases:
61
- // 1. A client component might import a server component's TYPE only
62
- // 2. A server component might be passed as children (rendered server-side)
63
- //
64
- // For safety, we replace the module with a proxy that:
65
- // - Exports a function that throws a helpful error
66
- // - Has a special marker so the RSC renderer can handle it
67
- const relativePath = path_1.default.relative(options.appDir, resourcePath);
68
- const componentId = `server:${relativePath.replace(/\\/g, '/').replace(/\.[jt]sx?$/, '')}`;
69
- const componentName = extractComponentName(source);
70
- // Generate proxy module
1
+ "use strict";
2
+ /**
3
+ * Vista Server Component Loader
4
+ *
5
+ * Webpack loader that transforms server component imports in client bundles.
6
+ *
7
+ * When a server component is imported in a client bundle:
8
+ * 1. The loader detects if the file has 'use client' directive
9
+ * 2. If NOT a client component, replace the module with a proxy
10
+ * 3. The proxy provides helpful error messages when misused
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.default = serverComponentLoader;
17
+ const path_1 = __importDefault(require("path"));
18
+ /**
19
+ * Check if source has 'use client' directive
20
+ */
21
+ function hasClientDirective(source) {
22
+ const trimmed = source.trim();
23
+ return trimmed.startsWith("'use client'") || trimmed.startsWith('"use client"');
24
+ }
25
+ /**
26
+ * Extract the component name from exports
27
+ */
28
+ function extractComponentName(source) {
29
+ // Try to find "export default function ComponentName" or "export default ComponentName"
30
+ const defaultFuncMatch = source.match(/export\s+default\s+function\s+([A-Z][a-zA-Z0-9_]*)/);
31
+ if (defaultFuncMatch)
32
+ return defaultFuncMatch[1];
33
+ const defaultClassMatch = source.match(/export\s+default\s+class\s+([A-Z][a-zA-Z0-9_]*)/);
34
+ if (defaultClassMatch)
35
+ return defaultClassMatch[1];
36
+ const defaultConstMatch = source.match(/export\s+default\s+([A-Z][a-zA-Z0-9_]*)/);
37
+ if (defaultConstMatch)
38
+ return defaultConstMatch[1];
39
+ return 'ServerComponent';
40
+ }
41
+ /**
42
+ * Server Component Loader
43
+ */
44
+ function serverComponentLoader(source) {
45
+ const options = this.getOptions();
46
+ const resourcePath = this.resourcePath;
47
+ // Only process files in the app directory
48
+ if (!resourcePath.startsWith(options.appDir)) {
49
+ return source;
50
+ }
51
+ // If this IS a client component, pass through unchanged
52
+ if (hasClientDirective(source)) {
53
+ return source;
54
+ }
55
+ // This is a server component - we need to check how it's being used
56
+ //
57
+ // The key insight: we're building the CLIENT bundle here.
58
+ // Server components should NOT be in the client bundle at all.
59
+ //
60
+ // However, there are valid use cases:
61
+ // 1. A client component might import a server component's TYPE only
62
+ // 2. A server component might be passed as children (rendered server-side)
63
+ //
64
+ // For safety, we replace the module with a proxy that:
65
+ // - Exports a function that throws a helpful error
66
+ // - Has a special marker so the RSC renderer can handle it
67
+ const relativePath = path_1.default.relative(options.appDir, resourcePath);
68
+ const componentId = `server:${relativePath.replace(/\\/g, '/').replace(/\.[jt]sx?$/, '')}`;
69
+ const componentName = extractComponentName(source);
70
+ // Generate proxy module
71
71
  const proxyModule = `
72
72
  // Vista Server Component Proxy
73
73
  // This file was transformed because "${relativePath}" is a Server Component
@@ -119,29 +119,29 @@ ServerComponentError.$$id = componentId;
119
119
  ServerComponentError.$$name = componentName;
120
120
 
121
121
  // Re-export any named exports as proxies too
122
- ${extractNamedExports(source)
122
+ ${extractNamedExports(source)
123
123
  .map((name) => `
124
124
  export const ${name} = ServerComponentError;
125
- `)
125
+ `)
126
126
  .join('\n')}
127
127
 
128
128
  export default ServerComponentError;
129
- `;
130
- return proxyModule;
131
- }
132
- /**
133
- * Extract named exports from source
134
- */
135
- function extractNamedExports(source) {
136
- const exports = [];
137
- // Match: export const/let/var Name, export function Name, export class Name
138
- const namedRegex = /export\s+(?:const|let|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;
139
- let match;
140
- while ((match = namedRegex.exec(source)) !== null) {
141
- exports.push(match[1]);
142
- }
143
- return exports;
144
- }
145
- // Also export the raw loader for Webpack
146
- module.exports = serverComponentLoader;
147
- module.exports.default = serverComponentLoader;
129
+ `;
130
+ return proxyModule;
131
+ }
132
+ /**
133
+ * Extract named exports from source
134
+ */
135
+ function extractNamedExports(source) {
136
+ const exports = [];
137
+ // Match: export const/let/var Name, export function Name, export class Name
138
+ const namedRegex = /export\s+(?:const|let|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;
139
+ let match;
140
+ while ((match = namedRegex.exec(source)) !== null) {
141
+ exports.push(match[1]);
142
+ }
143
+ return exports;
144
+ }
145
+ // Also export the raw loader for Webpack
146
+ module.exports = serverComponentLoader;
147
+ module.exports.default = serverComponentLoader;
@@ -9,6 +9,7 @@
9
9
  * - Have access to server resources (DB, file system, env vars)
10
10
  * - Contribute 0kb to the client JavaScript bundle
11
11
  */
12
+ import { type RouteHandlerMethod } from '../../server/route-handler-registry';
12
13
  import { type ResolvedSegmentConfig, type SegmentConfig } from '../../server/segment-config';
13
14
  export interface ServerComponentEntry {
14
15
  /** Unique ID for this component */
@@ -45,6 +46,22 @@ export interface ServerManifest {
45
46
  routes: RouteEntry[];
46
47
  /** Discovered server actions keyed by action id */
47
48
  serverActions: Record<string, ServerActionEntry>;
49
+ /** Discovered file-based API route handlers (`app/**\/route.*`) */
50
+ routeHandlers: RouteHandlerEntry[];
51
+ }
52
+ export interface RouteHandlerEntry {
53
+ /** URL pattern, e.g. `/api/users/:id` */
54
+ pattern: string;
55
+ /** Absolute path of the route file */
56
+ filePath: string;
57
+ /** Raw filesystem segments from `app/` to the route directory */
58
+ sourceSegments: string[];
59
+ /** Route shape, using the same vocabulary as page routes */
60
+ type: 'static' | 'dynamic' | 'catch-all';
61
+ /** HTTP methods the route file exports */
62
+ methods: RouteHandlerMethod[];
63
+ /** Runtime requested via `export const runtime`, when present */
64
+ runtime?: string;
48
65
  }
49
66
  export interface ServerActionEntry {
50
67
  /** Stable action id used by the runtime */
@@ -22,6 +22,7 @@ const path_1 = __importDefault(require("path"));
22
22
  const component_identity_1 = require("./component-identity");
23
23
  const constants_1 = require("../../constants");
24
24
  const runtime_actions_1 = require("../../server/runtime-actions");
25
+ const route_handler_registry_1 = require("../../server/route-handler-registry");
25
26
  const segment_config_1 = require("../../server/segment-config");
26
27
  const RESERVED_INTERNAL_SEGMENTS = new Set(['[not-found]']);
27
28
  function hasReservedInternalSegment(relativePath) {
@@ -432,6 +433,23 @@ function buildRoutes(components, appDir) {
432
433
  });
433
434
  return routes;
434
435
  }
436
+ /**
437
+ * Collect file-based API route handlers.
438
+ *
439
+ * Route handlers live in the same `app/` tree as pages but are not React components,
440
+ * so they are discovered separately from `scanForServerComponents` (which skips the
441
+ * `api` directory and treats every file it finds as a component).
442
+ */
443
+ function buildRouteHandlerEntries(appDir) {
444
+ return (0, route_handler_registry_1.discoverRouteHandlers)(appDir).map((handler) => ({
445
+ pattern: handler.pattern,
446
+ filePath: handler.filePath,
447
+ sourceSegments: handler.sourceSegments,
448
+ type: handler.type,
449
+ methods: handler.methods,
450
+ ...(handler.runtime ? { runtime: handler.runtime } : {}),
451
+ }));
452
+ }
435
453
  /**
436
454
  * Generate the server component manifest
437
455
  */
@@ -460,6 +478,7 @@ function generateServerManifest(cwd, appDir) {
460
478
  }
461
479
  }
462
480
  const routes = buildRoutes(components, appDir);
481
+ const routeHandlers = buildRouteHandlerEntries(appDir);
463
482
  // Get or generate build ID
464
483
  const buildIdPath = path_1.default.join(cwd, constants_1.BUILD_DIR, 'BUILD_ID');
465
484
  let buildId = 'dev';
@@ -477,6 +496,7 @@ function generateServerManifest(cwd, appDir) {
477
496
  pathToId,
478
497
  routes,
479
498
  serverActions,
499
+ routeHandlers,
480
500
  };
481
501
  }
482
502
  /**