@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.
- package/bin/vista.js +184 -177
- package/dist/ai/agent.d.ts +37 -0
- package/dist/ai/agent.js +385 -0
- package/dist/ai/embeddings.d.ts +11 -0
- package/dist/ai/embeddings.js +71 -0
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.js +26 -0
- package/dist/ai/memory.d.ts +16 -0
- package/dist/ai/memory.js +39 -0
- package/dist/ai/observability.d.ts +21 -0
- package/dist/ai/observability.js +69 -0
- package/dist/ai/providers/anthropic.d.ts +2 -0
- package/dist/ai/providers/anthropic.js +190 -0
- package/dist/ai/providers/base.d.ts +7 -0
- package/dist/ai/providers/base.js +85 -0
- package/dist/ai/providers/gemini.d.ts +2 -0
- package/dist/ai/providers/gemini.js +194 -0
- package/dist/ai/providers/index.d.ts +5 -0
- package/dist/ai/providers/index.js +21 -0
- package/dist/ai/providers/mock.d.ts +8 -0
- package/dist/ai/providers/mock.js +77 -0
- package/dist/ai/providers/openai.d.ts +2 -0
- package/dist/ai/providers/openai.js +211 -0
- package/dist/ai/rag.d.ts +35 -0
- package/dist/ai/rag.js +110 -0
- package/dist/ai/react/index.d.ts +1 -0
- package/dist/ai/react/index.js +17 -0
- package/dist/ai/react/react-server.d.ts +1 -0
- package/dist/ai/react/react-server.js +17 -0
- package/dist/ai/react/use-agent.d.ts +23 -0
- package/dist/ai/react/use-agent.js +138 -0
- package/dist/ai/stream.d.ts +24 -0
- package/dist/ai/stream.js +109 -0
- package/dist/ai/tool.d.ts +11 -0
- package/dist/ai/tool.js +47 -0
- package/dist/ai/types.d.ts +117 -0
- package/dist/ai/types.js +5 -0
- package/dist/auth/core.d.ts +140 -0
- package/dist/auth/core.js +165 -0
- package/dist/auth/index.d.ts +20 -8
- package/dist/auth/index.js +369 -16
- package/dist/auth/react-server.d.ts +1 -0
- package/dist/auth/react-server.js +10 -0
- package/dist/auth/react.d.ts +18 -0
- package/dist/auth/react.js +71 -0
- package/dist/bin/build-rsc.js +602 -604
- package/dist/bin/build.js +389 -388
- package/dist/bin/deploy-output.d.ts +2 -7
- package/dist/bin/deploy-output.js +3 -76
- package/dist/bin/deploy.d.ts +7 -0
- package/dist/bin/deploy.js +102 -0
- package/dist/bin/dev-error-overlay-snippet.js +778 -552
- package/dist/bin/devtools-indicator-snippet.js +387 -387
- package/dist/bin/generate.js +510 -248
- package/dist/build/manifest.d.ts +169 -139
- package/dist/build/manifest.js +423 -367
- package/dist/build/rsc/client-manifest.d.ts +62 -52
- package/dist/build/rsc/client-manifest.js +295 -193
- package/dist/build/rsc/client-reference-plugin.d.ts +37 -37
- package/dist/build/rsc/client-reference-plugin.js +160 -160
- package/dist/build/rsc/native-scanner.d.ts +135 -123
- package/dist/build/rsc/native-scanner.js +203 -170
- package/dist/build/rsc/react-client-reference-manifest.d.ts +28 -22
- package/dist/build/rsc/react-client-reference-manifest.js +240 -219
- package/dist/build/rsc/rsc-renderer.d.ts +99 -99
- package/dist/build/rsc/rsc-renderer.js +263 -263
- package/dist/build/rsc/server-component-loader.d.ts +19 -19
- package/dist/build/rsc/server-component-loader.js +91 -91
- package/dist/build/rsc/server-manifest.d.ts +17 -0
- package/dist/build/rsc/server-manifest.js +20 -0
- package/dist/build/standalone.js +337 -334
- package/dist/build/webpack/plugins/vista-flight-plugin.js +5 -5
- package/dist/client/dynamic.react-server.d.ts +2 -0
- package/dist/client/dynamic.react-server.js +23 -0
- package/dist/client/link.react-server.d.ts +2 -0
- package/dist/client/link.react-server.js +11 -0
- package/dist/client/navigation.react-server.d.ts +1 -0
- package/dist/client/navigation.react-server.js +17 -0
- package/dist/client/router.react-server.d.ts +1 -0
- package/dist/client/router.react-server.js +17 -0
- package/dist/client/rsc-router.react-server.d.ts +1 -0
- package/dist/client/rsc-router.react-server.js +17 -0
- package/dist/client/script.react-server.d.ts +2 -0
- package/dist/client/script.react-server.js +23 -0
- package/dist/components/client-island.d.ts +34 -34
- package/dist/components/client-island.js +75 -75
- package/dist/config.d.ts +17 -0
- package/dist/config.js +60 -1
- package/dist/deploy/adapters/cloudflare.d.ts +2 -0
- package/dist/deploy/adapters/cloudflare.js +124 -0
- package/dist/deploy/adapters/docker.d.ts +2 -0
- package/dist/deploy/adapters/docker.js +112 -0
- package/dist/deploy/adapters/index.d.ts +15 -0
- package/dist/deploy/adapters/index.js +24 -0
- package/dist/deploy/adapters/netlify.d.ts +2 -0
- package/dist/deploy/adapters/netlify.js +115 -0
- package/dist/deploy/adapters/render.d.ts +2 -0
- package/dist/deploy/adapters/render.js +95 -0
- package/dist/deploy/adapters/vercel.d.ts +7 -0
- package/dist/deploy/adapters/vercel.js +164 -0
- package/dist/deploy/cli-runner.d.ts +8 -0
- package/dist/deploy/cli-runner.js +58 -0
- package/dist/deploy/detect.d.ts +6 -0
- package/dist/deploy/detect.js +77 -0
- package/dist/deploy/index.d.ts +24 -0
- package/dist/deploy/index.js +112 -0
- package/dist/deploy/preflight.d.ts +8 -0
- package/dist/deploy/preflight.js +80 -0
- package/dist/deploy/types.d.ts +48 -0
- package/dist/deploy/types.js +2 -0
- package/dist/deploy/utils.d.ts +18 -0
- package/dist/deploy/utils.js +70 -0
- package/dist/dev-error.d.ts +14 -0
- package/dist/dev-error.js +1763 -705
- package/dist/index.d.ts +23 -21
- package/dist/index.js +61 -57
- package/dist/server/cookie-parse.d.ts +4 -0
- package/dist/server/cookie-parse.js +14 -0
- package/dist/server/engine.js +7 -26
- package/dist/server/index.d.ts +109 -102
- package/dist/server/index.js +315 -286
- package/dist/server/middleware-runner.d.ts +125 -57
- package/dist/server/middleware-runner.js +615 -218
- package/dist/server/middleware-security.d.ts +36 -0
- package/dist/server/middleware-security.js +183 -0
- package/dist/server/module-compile-hook.js +695 -662
- package/dist/server/route-handler-registry.d.ts +65 -0
- package/dist/server/route-handler-registry.js +195 -0
- package/dist/server/route-patterns.d.ts +67 -0
- package/dist/server/route-patterns.js +186 -0
- package/dist/server/rsc-engine.js +75 -92
- package/dist/server/rsc-module-system.d.ts +33 -33
- package/dist/server/rsc-module-system.js +87 -87
- package/dist/server/rsc-upstream.js +892 -888
- package/dist/server/static-generator.js +10 -10
- package/dist/server/typed-api-runtime.d.ts +18 -0
- package/dist/server/typed-api-runtime.js +635 -507
- package/dist/server/vista-import-map.js +134 -123
- package/dist/stack/index.d.ts +34 -32
- package/dist/stack/index.js +49 -45
- package/dist/stack/server/caller.d.ts +13 -0
- package/dist/stack/server/caller.js +42 -0
- package/dist/stack/server/executor.d.ts +40 -36
- package/dist/stack/server/executor.js +222 -174
- package/dist/stack/server/index.d.ts +11 -10
- package/dist/stack/server/index.js +24 -23
- package/dist/stack/server/procedure.d.ts +20 -18
- package/dist/stack/server/procedure.js +66 -58
- package/dist/stack/server/types.d.ts +113 -100
- package/dist/theme/react-server.d.ts +10 -0
- package/dist/theme/react-server.js +16 -0
- package/package.json +28 -3
- 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
|
/**
|