@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,123 +1,134 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.resolveVistaSourceRequest = resolveVistaSourceRequest;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- let nativeModule = null;
10
- let nativeLoadAttempted = false;
11
- function loadNativeModule() {
12
- if (nativeLoadAttempted) {
13
- return nativeModule;
14
- }
15
- nativeLoadAttempted = true;
16
- const possiblePaths = [
17
- path_1.default.resolve(__dirname, '../../../../crates/vista-napi'),
18
- path_1.default.resolve(__dirname, '../../../crates/vista-napi'),
19
- path_1.default.resolve(process.cwd(), '../crates/vista-napi'),
20
- '@aspect-build/vista-napi',
21
- ];
22
- for (const modulePath of possiblePaths) {
23
- try {
24
- nativeModule = require(modulePath);
25
- return nativeModule;
26
- }
27
- catch {
28
- // continue
29
- }
30
- }
31
- return null;
32
- }
33
- function resolveExistingModuleBase(candidateBase) {
34
- for (const extension of ['.js', '.ts', '.tsx', '.jsx']) {
35
- const absolutePath = `${candidateBase}${extension}`;
36
- if (fs_1.default.existsSync(absolutePath)) {
37
- return absolutePath;
38
- }
39
- }
40
- for (const extension of ['.js', '.ts', '.tsx', '.jsx']) {
41
- const indexPath = path_1.default.join(candidateBase, `index${extension}`);
42
- if (fs_1.default.existsSync(indexPath)) {
43
- return indexPath;
44
- }
45
- }
46
- return null;
47
- }
48
- function normalizeVistaRequest(request) {
49
- const normalizedRequest = request === '@vistagenic/vista'
50
- ? 'vista'
51
- : request.startsWith('@vistagenic/vista/')
52
- ? `vista/${request.slice('@vistagenic/vista/'.length)}`
53
- : request;
54
- if (normalizedRequest !== 'vista' && !normalizedRequest.startsWith('vista/')) {
55
- return null;
56
- }
57
- return normalizedRequest;
58
- }
59
- function resolveSourceCandidates(packageRoot, subpath) {
60
- if (subpath === '') {
61
- return [path_1.default.join(packageRoot, 'react-server'), path_1.default.join(packageRoot, 'index')];
62
- }
63
- const sourceMap = {
64
- link: [path_1.default.join(packageRoot, 'client', 'link')],
65
- image: [path_1.default.join(packageRoot, 'image', 'react-server'), path_1.default.join(packageRoot, 'image', 'index')],
66
- router: [path_1.default.join(packageRoot, 'client', 'router')],
67
- navigation: [path_1.default.join(packageRoot, 'client', 'navigation')],
68
- dynamic: [path_1.default.join(packageRoot, 'client', 'dynamic')],
69
- script: [path_1.default.join(packageRoot, 'client', 'script')],
70
- font: [path_1.default.join(packageRoot, 'font', 'index')],
71
- 'font/google': [path_1.default.join(packageRoot, 'font', 'google')],
72
- 'font/local': [path_1.default.join(packageRoot, 'font', 'local')],
73
- head: [path_1.default.join(packageRoot, 'client', 'head.react-server'), path_1.default.join(packageRoot, 'client', 'head')],
74
- config: [path_1.default.join(packageRoot, 'config')],
75
- stack: [path_1.default.join(packageRoot, 'stack', 'index')],
76
- 'stack/client': [path_1.default.join(packageRoot, 'stack', 'client', 'index')],
77
- 'client/rsc-router': [path_1.default.join(packageRoot, 'client', 'rsc-router')],
78
- 'client/server-actions': [path_1.default.join(packageRoot, 'client', 'server-actions')],
79
- server: [path_1.default.join(packageRoot, 'server', 'index')],
80
- 'server/runtime-actions': [path_1.default.join(packageRoot, 'server', 'runtime-actions')],
81
- cache: [path_1.default.join(packageRoot, 'server', 'cache')],
82
- };
83
- if (sourceMap[subpath]) {
84
- return sourceMap[subpath];
85
- }
86
- if (subpath.startsWith('server/')) {
87
- return [path_1.default.join(packageRoot, 'server', subpath.slice('server/'.length))];
88
- }
89
- if (subpath.startsWith('client/')) {
90
- return [path_1.default.join(packageRoot, 'client', subpath.slice('client/'.length))];
91
- }
92
- return [path_1.default.join(packageRoot, subpath)];
93
- }
94
- function resolveVistaSourceRequest(request, packageRoot) {
95
- const native = loadNativeModule();
96
- if (native?.resolveVistaSourceImport) {
97
- try {
98
- const nativeResolution = native.resolveVistaSourceImport(request, packageRoot);
99
- if (nativeResolution?.resolvedPath) {
100
- return nativeResolution.resolvedPath;
101
- }
102
- if (nativeResolution) {
103
- return null;
104
- }
105
- }
106
- catch {
107
- // fall through to JS fallback
108
- }
109
- }
110
- const normalizedRequest = normalizeVistaRequest(request);
111
- if (!normalizedRequest) {
112
- return null;
113
- }
114
- const subpath = normalizedRequest === 'vista' ? '' : normalizedRequest.slice('vista/'.length);
115
- const candidateBases = resolveSourceCandidates(packageRoot, subpath);
116
- for (const candidateBase of candidateBases) {
117
- const resolved = resolveExistingModuleBase(candidateBase);
118
- if (resolved) {
119
- return resolved;
120
- }
121
- }
122
- return null;
123
- }
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveVistaSourceRequest = resolveVistaSourceRequest;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ let nativeModule = null;
10
+ let nativeLoadAttempted = false;
11
+ function loadNativeModule() {
12
+ if (nativeLoadAttempted) {
13
+ return nativeModule;
14
+ }
15
+ nativeLoadAttempted = true;
16
+ const possiblePaths = [
17
+ path_1.default.resolve(__dirname, '../../../../crates/vista-napi'),
18
+ path_1.default.resolve(__dirname, '../../../crates/vista-napi'),
19
+ path_1.default.resolve(process.cwd(), '../crates/vista-napi'),
20
+ '@aspect-build/vista-napi',
21
+ ];
22
+ for (const modulePath of possiblePaths) {
23
+ try {
24
+ nativeModule = require(modulePath);
25
+ return nativeModule;
26
+ }
27
+ catch {
28
+ // continue
29
+ }
30
+ }
31
+ return null;
32
+ }
33
+ function resolveExistingModuleBase(candidateBase) {
34
+ for (const extension of ['.js', '.ts', '.tsx', '.jsx']) {
35
+ const absolutePath = `${candidateBase}${extension}`;
36
+ if (fs_1.default.existsSync(absolutePath)) {
37
+ return absolutePath;
38
+ }
39
+ }
40
+ for (const extension of ['.js', '.ts', '.tsx', '.jsx']) {
41
+ const indexPath = path_1.default.join(candidateBase, `index${extension}`);
42
+ if (fs_1.default.existsSync(indexPath)) {
43
+ return indexPath;
44
+ }
45
+ }
46
+ return null;
47
+ }
48
+ function normalizeVistaRequest(request) {
49
+ const normalizedRequest = request === '@vistagenic/vista'
50
+ ? 'vista'
51
+ : request.startsWith('@vistagenic/vista/')
52
+ ? `vista/${request.slice('@vistagenic/vista/'.length)}`
53
+ : request;
54
+ if (normalizedRequest !== 'vista' && !normalizedRequest.startsWith('vista/')) {
55
+ return null;
56
+ }
57
+ return normalizedRequest;
58
+ }
59
+ function resolveSourceCandidates(packageRoot, subpath) {
60
+ if (subpath === '') {
61
+ return [path_1.default.join(packageRoot, 'react-server'), path_1.default.join(packageRoot, 'index')];
62
+ }
63
+ const sourceMap = {
64
+ link: [path_1.default.join(packageRoot, 'client', 'link.react-server'), path_1.default.join(packageRoot, 'client', 'link')],
65
+ image: [path_1.default.join(packageRoot, 'image', 'react-server'), path_1.default.join(packageRoot, 'image', 'index')],
66
+ router: [path_1.default.join(packageRoot, 'client', 'router.react-server'), path_1.default.join(packageRoot, 'client', 'router')],
67
+ navigation: [
68
+ path_1.default.join(packageRoot, 'client', 'navigation.react-server'),
69
+ path_1.default.join(packageRoot, 'client', 'navigation'),
70
+ ],
71
+ dynamic: [path_1.default.join(packageRoot, 'client', 'dynamic.react-server'), path_1.default.join(packageRoot, 'client', 'dynamic')],
72
+ script: [path_1.default.join(packageRoot, 'client', 'script.react-server'), path_1.default.join(packageRoot, 'client', 'script')],
73
+ font: [path_1.default.join(packageRoot, 'font', 'index')],
74
+ 'font/google': [path_1.default.join(packageRoot, 'font', 'google')],
75
+ 'font/local': [path_1.default.join(packageRoot, 'font', 'local')],
76
+ theme: [path_1.default.join(packageRoot, 'theme', 'react-server'), path_1.default.join(packageRoot, 'theme', 'index')],
77
+ head: [path_1.default.join(packageRoot, 'client', 'head.react-server'), path_1.default.join(packageRoot, 'client', 'head')],
78
+ config: [path_1.default.join(packageRoot, 'config')],
79
+ auth: [path_1.default.join(packageRoot, 'auth', 'index')],
80
+ 'auth/react': [path_1.default.join(packageRoot, 'auth', 'react-server'), path_1.default.join(packageRoot, 'auth', 'react')],
81
+ ai: [path_1.default.join(packageRoot, 'ai', 'index')],
82
+ 'ai/react': [path_1.default.join(packageRoot, 'ai', 'react', 'react-server'), path_1.default.join(packageRoot, 'ai', 'react', 'index')],
83
+ stack: [path_1.default.join(packageRoot, 'stack', 'index')],
84
+ 'stack/client': [path_1.default.join(packageRoot, 'stack', 'client', 'index')],
85
+ 'client/rsc-router': [
86
+ path_1.default.join(packageRoot, 'client', 'rsc-router.react-server'),
87
+ path_1.default.join(packageRoot, 'client', 'rsc-router'),
88
+ ],
89
+ 'client/server-actions': [path_1.default.join(packageRoot, 'client', 'server-actions')],
90
+ server: [path_1.default.join(packageRoot, 'server', 'index')],
91
+ 'server/runtime-actions': [path_1.default.join(packageRoot, 'server', 'runtime-actions')],
92
+ cache: [path_1.default.join(packageRoot, 'server', 'cache')],
93
+ };
94
+ if (sourceMap[subpath]) {
95
+ return sourceMap[subpath];
96
+ }
97
+ if (subpath.startsWith('server/')) {
98
+ return [path_1.default.join(packageRoot, 'server', subpath.slice('server/'.length))];
99
+ }
100
+ if (subpath.startsWith('client/')) {
101
+ return [path_1.default.join(packageRoot, 'client', subpath.slice('client/'.length))];
102
+ }
103
+ return [path_1.default.join(packageRoot, subpath)];
104
+ }
105
+ function resolveVistaSourceRequest(request, packageRoot) {
106
+ const native = loadNativeModule();
107
+ if (native?.resolveVistaSourceImport) {
108
+ try {
109
+ const nativeResolution = native.resolveVistaSourceImport(request, packageRoot);
110
+ if (nativeResolution?.resolvedPath) {
111
+ return nativeResolution.resolvedPath;
112
+ }
113
+ if (nativeResolution) {
114
+ return null;
115
+ }
116
+ }
117
+ catch {
118
+ // fall through to JS fallback
119
+ }
120
+ }
121
+ const normalizedRequest = normalizeVistaRequest(request);
122
+ if (!normalizedRequest) {
123
+ return null;
124
+ }
125
+ const subpath = normalizedRequest === 'vista' ? '' : normalizedRequest.slice('vista/'.length);
126
+ const candidateBases = resolveSourceCandidates(packageRoot, subpath);
127
+ for (const candidateBase of candidateBases) {
128
+ const resolved = resolveExistingModuleBase(candidateBase);
129
+ if (resolved) {
130
+ return resolved;
131
+ }
132
+ }
133
+ return null;
134
+ }
@@ -1,32 +1,34 @@
1
- import { mergeRouters as mergeStackRouters } from './server/merge-routers';
2
- import { type ProcedureBuilder } from './server/procedure';
3
- import { type CreateRouterOptions } from './server/router';
4
- import { type StackSerializer } from './server/serialization';
5
- import type { MiddlewareFunction, ProcedureRecord, StackRouter, StackSerializationMode } from './server/types';
6
- /**
7
- * Package entry for `@vistagenic/vista/stack`.
8
- *
9
- * Example:
10
- * import { vstack } from '@vistagenic/vista/stack'
11
- * const v = vstack.init()
12
- */
13
- export interface VStackInitOptions {
14
- serialization?: StackSerializationMode;
15
- }
16
- export interface VStackInstance<TCtx, TEnv> {
17
- procedure: ProcedureBuilder<TCtx, TEnv>;
18
- middleware<TCurrentCtx extends TCtx, TOutput extends Record<string, unknown> = {}>(handler: MiddlewareFunction<TCurrentCtx, TOutput, TEnv>): MiddlewareFunction<TCurrentCtx, TOutput, TEnv>;
19
- router<TProcedures extends ProcedureRecord>(procedures: TProcedures, options?: CreateRouterOptions<TEnv>): StackRouter<TProcedures, TCtx, TEnv>;
20
- mergeRouters: typeof mergeStackRouters;
21
- serializer: StackSerializer;
22
- options: Required<VStackInitOptions>;
23
- }
24
- export declare function initStack<TCtx extends Record<string, unknown> = {}, TEnv = unknown>(options?: VStackInitOptions): VStackInstance<TCtx, TEnv>;
25
- export declare const vstack: {
26
- init: typeof initStack;
27
- };
28
- /**
29
- * Re-export server stack primitives from `@vistagenic/vista/stack`.
30
- */
31
- export type { CreateRouterOptions } from './server/router';
32
- export * from './server';
1
+ import { mergeRouters as mergeStackRouters } from './server/merge-routers';
2
+ import { type CreateCallerOptions, type InferCaller } from './server/caller';
3
+ import { type ProcedureBuilder } from './server/procedure';
4
+ import { type CreateRouterOptions } from './server/router';
5
+ import { type StackSerializer } from './server/serialization';
6
+ import type { MiddlewareFunction, ProcedureRecord, StackRouter, StackSerializationMode } from './server/types';
7
+ /**
8
+ * Package entry for `@vistagenic/vista/stack`.
9
+ *
10
+ * Example:
11
+ * import { vstack } from '@vistagenic/vista/stack'
12
+ * const v = vstack.init()
13
+ */
14
+ export interface VStackInitOptions {
15
+ serialization?: StackSerializationMode;
16
+ }
17
+ export interface VStackInstance<TCtx, TEnv> {
18
+ procedure: ProcedureBuilder<TCtx, TEnv>;
19
+ middleware<TCurrentCtx extends TCtx, TOutput extends Record<string, unknown> = {}>(handler: MiddlewareFunction<TCurrentCtx, TOutput, TEnv>): MiddlewareFunction<TCurrentCtx, TOutput, TEnv>;
20
+ router<TProcedures extends ProcedureRecord>(procedures: TProcedures, options?: CreateRouterOptions<TEnv>): StackRouter<TProcedures, TCtx, TEnv>;
21
+ mergeRouters: typeof mergeStackRouters;
22
+ createCaller<TProcedures extends ProcedureRecord>(router: StackRouter<TProcedures, TCtx, TEnv>, options: CreateCallerOptions<TCtx, TEnv>): InferCaller<TProcedures>;
23
+ serializer: StackSerializer;
24
+ options: Required<VStackInitOptions>;
25
+ }
26
+ export declare function initStack<TCtx extends Record<string, unknown> = {}, TEnv = unknown>(options?: VStackInitOptions): VStackInstance<TCtx, TEnv>;
27
+ export declare const vstack: {
28
+ init: typeof initStack;
29
+ };
30
+ /**
31
+ * Re-export server stack primitives from `@vistagenic/vista/stack`.
32
+ */
33
+ export type { CreateRouterOptions } from './server/router';
34
+ export * from './server';
@@ -1,45 +1,49 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.vstack = void 0;
18
- exports.initStack = initStack;
19
- const merge_routers_1 = require("./server/merge-routers");
20
- const procedure_1 = require("./server/procedure");
21
- const router_1 = require("./server/router");
22
- const serialization_1 = require("./server/serialization");
23
- function initStack(options = {}) {
24
- const normalizedOptions = {
25
- serialization: options.serialization ?? 'json',
26
- };
27
- return {
28
- procedure: (0, procedure_1.createProcedureBuilder)(),
29
- middleware(handler) {
30
- return handler;
31
- },
32
- router(procedures, routerOptions) {
33
- return (0, router_1.createRouter)(procedures, routerOptions);
34
- },
35
- mergeRouters(...routers) {
36
- return (0, merge_routers_1.mergeRouters)(...routers);
37
- },
38
- serializer: (0, serialization_1.createSerializer)(normalizedOptions.serialization),
39
- options: normalizedOptions,
40
- };
41
- }
42
- exports.vstack = {
43
- init: initStack,
44
- };
45
- __exportStar(require("./server"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.vstack = void 0;
18
+ exports.initStack = initStack;
19
+ const merge_routers_1 = require("./server/merge-routers");
20
+ const caller_1 = require("./server/caller");
21
+ const procedure_1 = require("./server/procedure");
22
+ const router_1 = require("./server/router");
23
+ const serialization_1 = require("./server/serialization");
24
+ function initStack(options = {}) {
25
+ const normalizedOptions = {
26
+ serialization: options.serialization ?? 'json',
27
+ };
28
+ return {
29
+ procedure: (0, procedure_1.createProcedureBuilder)(),
30
+ middleware(handler) {
31
+ return handler;
32
+ },
33
+ router(procedures, routerOptions) {
34
+ return (0, router_1.createRouter)(procedures, routerOptions);
35
+ },
36
+ mergeRouters(...routers) {
37
+ return (0, merge_routers_1.mergeRouters)(...routers);
38
+ },
39
+ createCaller(router, callerOptions) {
40
+ return (0, caller_1.createCaller)(router, callerOptions);
41
+ },
42
+ serializer: (0, serialization_1.createSerializer)(normalizedOptions.serialization),
43
+ options: normalizedOptions,
44
+ };
45
+ }
46
+ exports.vstack = {
47
+ init: initStack,
48
+ };
49
+ __exportStar(require("./server"), exports);
@@ -0,0 +1,13 @@
1
+ import type { OperationType, ProcedureRecord, StackRequestLike, StackRouter, StackSerializationMode } from './types';
2
+ export interface CreateCallerOptions<TCtx, TEnv> {
3
+ ctx: TCtx;
4
+ env: TEnv;
5
+ req?: StackRequestLike;
6
+ serialization?: StackSerializationMode;
7
+ }
8
+ type CallerFn<TInput, TOutput> = [TInput] extends [void] ? () => Promise<TOutput> : (input: TInput) => Promise<TOutput>;
9
+ export type InferCaller<TNode> = TNode extends OperationType<infer TInput, infer TOutput, any, any> ? CallerFn<TInput, TOutput> : TNode extends ProcedureRecord ? {
10
+ [TKey in keyof TNode]: InferCaller<TNode[TKey]>;
11
+ } : never;
12
+ export declare function createCaller<TProcedures extends ProcedureRecord, TCtx, TEnv>(router: StackRouter<TProcedures, TCtx, TEnv>, options: CreateCallerOptions<TCtx, TEnv>): InferCaller<TProcedures>;
13
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCaller = createCaller;
4
+ const procedure_1 = require("./procedure");
5
+ const executor_1 = require("./executor");
6
+ function buildRequest(operation, input, base) {
7
+ if (operation.type === 'get') {
8
+ return {
9
+ ...base,
10
+ method: 'GET',
11
+ query: input ?? base?.query ?? {},
12
+ };
13
+ }
14
+ return {
15
+ ...base,
16
+ method: 'POST',
17
+ body: input ?? base?.body,
18
+ };
19
+ }
20
+ function createNodeCaller(node, router, options) {
21
+ if ((0, procedure_1.isOperation)(node)) {
22
+ return async (input) => {
23
+ const toolkit = (0, executor_1.createResponseToolkit)(options.serialization ?? 'json');
24
+ return (0, executor_1.executeOperation)(node, {
25
+ ctx: options.ctx,
26
+ env: options.env,
27
+ req: buildRequest(node, input, options.req),
28
+ c: toolkit,
29
+ middlewares: router.metadata.globalMiddlewares,
30
+ serialization: options.serialization,
31
+ });
32
+ };
33
+ }
34
+ const nested = {};
35
+ for (const [key, child] of Object.entries(node)) {
36
+ nested[key] = createNodeCaller(child, router, options);
37
+ }
38
+ return nested;
39
+ }
40
+ function createCaller(router, options) {
41
+ return createNodeCaller(router.procedures, router, options);
42
+ }
@@ -1,36 +1,40 @@
1
- import type { MiddlewareFunction, OperationType, ProcedureRecord, StackExecutionContext, StackRequestLike, StackResponseToolkit, StackRouter, StackSerializationMode } from './types';
2
- export declare class StackRouteNotFoundError extends Error {
3
- status: number;
4
- constructor(path: string);
5
- }
6
- export declare class StackMethodNotAllowedError extends Error {
7
- status: number;
8
- constructor(path: string, method: string);
9
- }
10
- export declare class StackValidationError extends Error {
11
- status: number;
12
- cause: unknown;
13
- constructor(message: string, cause?: unknown);
14
- }
15
- export declare function createResponseToolkit(mode?: StackSerializationMode): StackResponseToolkit;
16
- export declare function runMiddlewareChain<TCtx, TEnv>(middlewares: MiddlewareFunction<any, any, TEnv>[], context: TCtx, env: TEnv, req: StackRequestLike, c: StackResponseToolkit): Promise<TCtx>;
17
- export interface ExecuteOperationOptions<TCtx, TEnv> extends StackExecutionContext<TCtx, TEnv> {
18
- middlewares?: MiddlewareFunction<any, any, TEnv>[];
19
- serialization?: StackSerializationMode;
20
- }
21
- export declare function executeOperation<TCtx, TInput, TOutput, TEnv>(operation: OperationType<TInput, TOutput, TCtx, TEnv>, options: ExecuteOperationOptions<TCtx, TEnv>): Promise<TOutput>;
22
- export interface ExecuteRouteOptions<TCtx, TEnv> {
23
- path: string;
24
- method: string;
25
- req: StackRequestLike;
26
- ctx: TCtx;
27
- env: TEnv;
28
- serialization?: StackSerializationMode;
29
- }
30
- export interface ExecuteRouteResult<TData = unknown> {
31
- path: string;
32
- method: string;
33
- data: TData;
34
- serializedData: unknown;
35
- }
36
- export declare function executeRoute<TProcedures extends ProcedureRecord, TCtx, TEnv>(router: StackRouter<TProcedures, TCtx, TEnv>, options: ExecuteRouteOptions<TCtx, TEnv>): Promise<ExecuteRouteResult>;
1
+ import type { MiddlewareFunction, OperationType, ProcedureRecord, StackExecutionContext, StackRequestLike, StackResponseToolkit, StackRouter, StackSerializationMode } from './types';
2
+ export declare class StackRouteNotFoundError extends Error {
3
+ status: number;
4
+ constructor(path: string);
5
+ }
6
+ export declare class StackMethodNotAllowedError extends Error {
7
+ status: number;
8
+ constructor(path: string, method: string);
9
+ }
10
+ export declare class StackValidationError extends Error {
11
+ status: number;
12
+ cause: unknown;
13
+ constructor(message: string, cause?: unknown);
14
+ }
15
+ export declare class StackOutputValidationError extends StackValidationError {
16
+ status: number;
17
+ constructor(message: string, cause?: unknown);
18
+ }
19
+ export declare function createResponseToolkit(mode?: StackSerializationMode): StackResponseToolkit;
20
+ export declare function runMiddlewareChain<TCtx, TEnv>(middlewares: MiddlewareFunction<any, any, TEnv>[], context: TCtx, env: TEnv, req: StackRequestLike, c: StackResponseToolkit): Promise<TCtx>;
21
+ export interface ExecuteOperationOptions<TCtx, TEnv> extends StackExecutionContext<TCtx, TEnv> {
22
+ middlewares?: MiddlewareFunction<any, any, TEnv>[];
23
+ serialization?: StackSerializationMode;
24
+ }
25
+ export declare function executeOperation<TCtx, TInput, TOutput, TEnv>(operation: OperationType<TInput, TOutput, TCtx, TEnv>, options: ExecuteOperationOptions<TCtx, TEnv>): Promise<TOutput>;
26
+ export interface ExecuteRouteOptions<TCtx, TEnv> {
27
+ path: string;
28
+ method: string;
29
+ req: StackRequestLike;
30
+ ctx: TCtx;
31
+ env: TEnv;
32
+ serialization?: StackSerializationMode;
33
+ }
34
+ export interface ExecuteRouteResult<TData = unknown> {
35
+ path: string;
36
+ method: string;
37
+ data: TData;
38
+ serializedData: unknown;
39
+ }
40
+ export declare function executeRoute<TProcedures extends ProcedureRecord, TCtx, TEnv>(router: StackRouter<TProcedures, TCtx, TEnv>, options: ExecuteRouteOptions<TCtx, TEnv>): Promise<ExecuteRouteResult>;