@vistagenic/vista 0.1.0-alpha.1

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 (100) hide show
  1. package/bin/vista.js +98 -0
  2. package/dist/auth/index.d.ts +8 -0
  3. package/dist/auth/index.js +16 -0
  4. package/dist/bin/build-rsc.d.ts +17 -0
  5. package/dist/bin/build-rsc.js +320 -0
  6. package/dist/bin/build.d.ts +4 -0
  7. package/dist/bin/build.js +336 -0
  8. package/dist/bin/file-scanner.d.ts +66 -0
  9. package/dist/bin/file-scanner.js +399 -0
  10. package/dist/bin/server-component-plugin.d.ts +17 -0
  11. package/dist/bin/server-component-plugin.js +133 -0
  12. package/dist/bin/webpack.config.d.ts +6 -0
  13. package/dist/bin/webpack.config.js +138 -0
  14. package/dist/build/manifest.d.ts +95 -0
  15. package/dist/build/manifest.js +168 -0
  16. package/dist/build/rsc/client-manifest.d.ts +48 -0
  17. package/dist/build/rsc/client-manifest.js +191 -0
  18. package/dist/build/rsc/client-reference-plugin.d.ts +37 -0
  19. package/dist/build/rsc/client-reference-plugin.js +185 -0
  20. package/dist/build/rsc/compiler.d.ts +36 -0
  21. package/dist/build/rsc/compiler.js +311 -0
  22. package/dist/build/rsc/index.d.ts +16 -0
  23. package/dist/build/rsc/index.js +32 -0
  24. package/dist/build/rsc/native-scanner.d.ts +123 -0
  25. package/dist/build/rsc/native-scanner.js +165 -0
  26. package/dist/build/rsc/rsc-renderer.d.ts +99 -0
  27. package/dist/build/rsc/rsc-renderer.js +269 -0
  28. package/dist/build/rsc/server-component-loader.d.ts +19 -0
  29. package/dist/build/rsc/server-component-loader.js +147 -0
  30. package/dist/build/rsc/server-manifest.d.ts +63 -0
  31. package/dist/build/rsc/server-manifest.js +268 -0
  32. package/dist/build/webpack/loaders/vista-flight-loader.d.ts +17 -0
  33. package/dist/build/webpack/loaders/vista-flight-loader.js +93 -0
  34. package/dist/build/webpack/plugins/vista-flight-plugin.d.ts +36 -0
  35. package/dist/build/webpack/plugins/vista-flight-plugin.js +133 -0
  36. package/dist/client/dynamic.d.ts +25 -0
  37. package/dist/client/dynamic.js +68 -0
  38. package/dist/client/font.d.ts +98 -0
  39. package/dist/client/font.js +109 -0
  40. package/dist/client/head.d.ts +79 -0
  41. package/dist/client/head.js +261 -0
  42. package/dist/client/hydration.d.ts +45 -0
  43. package/dist/client/hydration.js +291 -0
  44. package/dist/client/link.d.ts +30 -0
  45. package/dist/client/link.js +188 -0
  46. package/dist/client/navigation.d.ts +28 -0
  47. package/dist/client/navigation.js +116 -0
  48. package/dist/client/router.d.ts +41 -0
  49. package/dist/client/router.js +190 -0
  50. package/dist/client/script.d.ts +51 -0
  51. package/dist/client/script.js +118 -0
  52. package/dist/components/client-island.d.ts +34 -0
  53. package/dist/components/client-island.js +75 -0
  54. package/dist/components/client.d.ts +29 -0
  55. package/dist/components/client.js +102 -0
  56. package/dist/components/index.d.ts +1 -0
  57. package/dist/components/index.js +8 -0
  58. package/dist/components/link.d.ts +6 -0
  59. package/dist/components/link.js +13 -0
  60. package/dist/config.d.ts +10 -0
  61. package/dist/config.js +31 -0
  62. package/dist/dev-error.d.ts +35 -0
  63. package/dist/dev-error.js +310 -0
  64. package/dist/image/get-img-props.d.ts +28 -0
  65. package/dist/image/get-img-props.js +49 -0
  66. package/dist/image/image-config.d.ts +20 -0
  67. package/dist/image/image-config.js +20 -0
  68. package/dist/image/image-loader.d.ts +7 -0
  69. package/dist/image/image-loader.js +14 -0
  70. package/dist/image/index.d.ts +6 -0
  71. package/dist/image/index.js +110 -0
  72. package/dist/image.d.ts +10 -0
  73. package/dist/image.js +7 -0
  74. package/dist/index.d.ts +20 -0
  75. package/dist/index.js +53 -0
  76. package/dist/metadata/generate.d.ts +22 -0
  77. package/dist/metadata/generate.js +324 -0
  78. package/dist/metadata/index.d.ts +7 -0
  79. package/dist/metadata/index.js +26 -0
  80. package/dist/metadata/types.d.ts +325 -0
  81. package/dist/metadata/types.js +15 -0
  82. package/dist/router/context.d.ts +8 -0
  83. package/dist/router/context.js +13 -0
  84. package/dist/router/index.d.ts +2 -0
  85. package/dist/router/index.js +18 -0
  86. package/dist/router/provider.d.ts +5 -0
  87. package/dist/router/provider.js +31 -0
  88. package/dist/server/client-boundary.d.ts +48 -0
  89. package/dist/server/client-boundary.js +133 -0
  90. package/dist/server/engine.d.ts +4 -0
  91. package/dist/server/engine.js +651 -0
  92. package/dist/server/index.d.ts +95 -0
  93. package/dist/server/index.js +177 -0
  94. package/dist/server/rsc-engine.d.ts +20 -0
  95. package/dist/server/rsc-engine.js +588 -0
  96. package/dist/server/rsc-module-system.d.ts +33 -0
  97. package/dist/server/rsc-module-system.js +119 -0
  98. package/dist/types/index.d.ts +4 -0
  99. package/dist/types/index.js +2 -0
  100. package/package.json +103 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Vista Metadata Renderer
3
+ *
4
+ * Converts Metadata object to React head elements.
5
+ * Used by server for SSR and can be used client-side.
6
+ */
7
+ import * as React from 'react';
8
+ import type { Metadata } from './types';
9
+ export interface MetadataRendererProps {
10
+ metadata: Metadata;
11
+ parentTemplate?: string;
12
+ }
13
+ /**
14
+ * Renders metadata as React head elements.
15
+ * Returns an array of elements to be placed in <head>.
16
+ */
17
+ export declare function MetadataRenderer({ metadata, parentTemplate }: MetadataRendererProps): React.ReactElement;
18
+ /**
19
+ * Converts metadata to HTML string for SSR injection.
20
+ */
21
+ export declare function generateMetadataHtml(metadata: Metadata, parentTemplate?: string): string;
22
+ export default MetadataRenderer;
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataRenderer = MetadataRenderer;
4
+ exports.generateMetadataHtml = generateMetadataHtml;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ // ============================================================================
7
+ // Helper Functions
8
+ // ============================================================================
9
+ function resolveTitle(title, template) {
10
+ if (!title)
11
+ return null;
12
+ if (typeof title === 'string') {
13
+ if (template) {
14
+ return template.replace('%s', title);
15
+ }
16
+ return title;
17
+ }
18
+ // TemplateString object
19
+ if (title.absolute) {
20
+ return title.absolute;
21
+ }
22
+ const baseTitle = title.default;
23
+ if (title.template) {
24
+ return title.template.replace('%s', baseTitle);
25
+ }
26
+ return baseTitle;
27
+ }
28
+ function resolveUrl(url, base) {
29
+ if (!url)
30
+ return null;
31
+ const urlStr = url.toString();
32
+ if (urlStr.startsWith('http://') || urlStr.startsWith('https://')) {
33
+ return urlStr;
34
+ }
35
+ if (base) {
36
+ return new URL(urlStr, base.toString()).toString();
37
+ }
38
+ return urlStr;
39
+ }
40
+ // ============================================================================
41
+ // Meta Tag Generators
42
+ // ============================================================================
43
+ function generateBasicMeta(metadata) {
44
+ const elements = [];
45
+ // Description
46
+ if (metadata.description) {
47
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "description", content: metadata.description }, "description"));
48
+ }
49
+ // Application name
50
+ if (metadata.applicationName) {
51
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "application-name", content: metadata.applicationName }, "application-name"));
52
+ }
53
+ // Generator
54
+ if (metadata.generator) {
55
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "generator", content: metadata.generator }, "generator"));
56
+ }
57
+ // Keywords
58
+ if (metadata.keywords) {
59
+ const keywords = Array.isArray(metadata.keywords)
60
+ ? metadata.keywords.join(', ')
61
+ : metadata.keywords;
62
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "keywords", content: keywords }, "keywords"));
63
+ }
64
+ // Referrer
65
+ if (metadata.referrer) {
66
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "referrer", content: metadata.referrer }, "referrer"));
67
+ }
68
+ // Creator
69
+ if (metadata.creator) {
70
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "creator", content: metadata.creator }, "creator"));
71
+ }
72
+ // Publisher
73
+ if (metadata.publisher) {
74
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "publisher", content: metadata.publisher }, "publisher"));
75
+ }
76
+ // Category
77
+ if (metadata.category) {
78
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "category", content: metadata.category }, "category"));
79
+ }
80
+ // Abstract
81
+ if (metadata.abstract) {
82
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "abstract", content: metadata.abstract }, "abstract"));
83
+ }
84
+ return elements;
85
+ }
86
+ function generateAuthorMeta(authors) {
87
+ if (!authors)
88
+ return [];
89
+ const authorList = Array.isArray(authors) ? authors : [authors];
90
+ const elements = [];
91
+ authorList.forEach((author, index) => {
92
+ if (author.name) {
93
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "author", content: author.name }, `author-${index}`));
94
+ }
95
+ if (author.url) {
96
+ elements.push((0, jsx_runtime_1.jsx)("link", { rel: "author", href: author.url.toString() }, `author-link-${index}`));
97
+ }
98
+ });
99
+ return elements;
100
+ }
101
+ function generateRobotsMeta(robots) {
102
+ if (!robots)
103
+ return [];
104
+ if (typeof robots === 'string') {
105
+ return [(0, jsx_runtime_1.jsx)("meta", { name: "robots", content: robots }, "robots")];
106
+ }
107
+ const directives = [];
108
+ if (robots.index !== undefined)
109
+ directives.push(robots.index ? 'index' : 'noindex');
110
+ if (robots.follow !== undefined)
111
+ directives.push(robots.follow ? 'follow' : 'nofollow');
112
+ if (robots.noarchive)
113
+ directives.push('noarchive');
114
+ if (robots.nosnippet)
115
+ directives.push('nosnippet');
116
+ if (robots.noimageindex)
117
+ directives.push('noimageindex');
118
+ if (robots.nocache)
119
+ directives.push('nocache');
120
+ if (robots['max-snippet'] !== undefined)
121
+ directives.push(`max-snippet:${robots['max-snippet']}`);
122
+ if (robots['max-image-preview'])
123
+ directives.push(`max-image-preview:${robots['max-image-preview']}`);
124
+ if (robots['max-video-preview'] !== undefined)
125
+ directives.push(`max-video-preview:${robots['max-video-preview']}`);
126
+ const elements = [];
127
+ if (directives.length > 0) {
128
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "robots", content: directives.join(', ') }, "robots"));
129
+ }
130
+ // GoogleBot specific
131
+ if (robots.googleBot) {
132
+ if (typeof robots.googleBot === 'string') {
133
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "googlebot", content: robots.googleBot }, "googlebot"));
134
+ }
135
+ }
136
+ return elements;
137
+ }
138
+ function generateOpenGraphMeta(og, base) {
139
+ if (!og)
140
+ return [];
141
+ const elements = [];
142
+ // Type
143
+ if (og.type) {
144
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:type", content: og.type }, "og:type"));
145
+ }
146
+ else {
147
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:type", content: "website" }, "og:type"));
148
+ }
149
+ // Title
150
+ if (og.title) {
151
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:title", content: og.title }, "og:title"));
152
+ }
153
+ // Description
154
+ if (og.description) {
155
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:description", content: og.description }, "og:description"));
156
+ }
157
+ // URL
158
+ if (og.url) {
159
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:url", content: resolveUrl(og.url, base) || '' }, "og:url"));
160
+ }
161
+ // Site name
162
+ if (og.siteName) {
163
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:site_name", content: og.siteName }, "og:site_name"));
164
+ }
165
+ // Locale
166
+ if (og.locale) {
167
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:locale", content: og.locale }, "og:locale"));
168
+ }
169
+ // Images
170
+ if (og.images) {
171
+ const images = Array.isArray(og.images) ? og.images : [og.images];
172
+ images.forEach((image, index) => {
173
+ if (typeof image === 'string' || image instanceof URL) {
174
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:image", content: resolveUrl(image, base) || '' }, `og:image:${index}`));
175
+ }
176
+ else {
177
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:image", content: resolveUrl(image.url, base) || '' }, `og:image:${index}`));
178
+ if (image.width) {
179
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:image:width", content: String(image.width) }, `og:image:width:${index}`));
180
+ }
181
+ if (image.height) {
182
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:image:height", content: String(image.height) }, `og:image:height:${index}`));
183
+ }
184
+ if (image.alt) {
185
+ elements.push((0, jsx_runtime_1.jsx)("meta", { property: "og:image:alt", content: image.alt }, `og:image:alt:${index}`));
186
+ }
187
+ }
188
+ });
189
+ }
190
+ return elements;
191
+ }
192
+ function generateTwitterMeta(twitter) {
193
+ if (!twitter)
194
+ return [];
195
+ const elements = [];
196
+ // Card type
197
+ if (twitter.card) {
198
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:card", content: twitter.card }, "twitter:card"));
199
+ }
200
+ // Site
201
+ if (twitter.site) {
202
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:site", content: twitter.site }, "twitter:site"));
203
+ }
204
+ // Creator
205
+ if (twitter.creator) {
206
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:creator", content: twitter.creator }, "twitter:creator"));
207
+ }
208
+ // Title
209
+ if (twitter.title) {
210
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:title", content: twitter.title }, "twitter:title"));
211
+ }
212
+ // Description
213
+ if (twitter.description) {
214
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:description", content: twitter.description }, "twitter:description"));
215
+ }
216
+ // Images
217
+ if (twitter.images) {
218
+ const images = Array.isArray(twitter.images) ? twitter.images : [twitter.images];
219
+ images.forEach((image, index) => {
220
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "twitter:image", content: image.toString() }, `twitter:image:${index}`));
221
+ });
222
+ }
223
+ return elements;
224
+ }
225
+ function generateIconLinks(icons) {
226
+ if (!icons)
227
+ return [];
228
+ const elements = [];
229
+ const addIcon = (icon, rel = 'icon', index = 0) => {
230
+ if (typeof icon === 'string' || icon instanceof URL) {
231
+ elements.push((0, jsx_runtime_1.jsx)("link", { rel: rel, href: icon.toString() }, `${rel}-${index}`));
232
+ }
233
+ else {
234
+ elements.push((0, jsx_runtime_1.jsx)("link", { rel: icon.rel || rel, href: icon.url.toString(), type: icon.type, sizes: icon.sizes }, `${rel}-${index}`));
235
+ }
236
+ };
237
+ if (Array.isArray(icons)) {
238
+ icons.forEach((icon, index) => addIcon(icon, 'icon', index));
239
+ }
240
+ else if (typeof icons === 'string' || icons instanceof URL) {
241
+ addIcon(icons);
242
+ }
243
+ else if ('url' in icons) {
244
+ // Single IconDescriptor
245
+ addIcon(icons);
246
+ }
247
+ else {
248
+ // Icons object
249
+ const iconsObj = icons;
250
+ if (iconsObj.icon) {
251
+ const iconList = Array.isArray(iconsObj.icon) ? iconsObj.icon : [iconsObj.icon];
252
+ iconList.forEach((icon, index) => addIcon(icon, 'icon', index));
253
+ }
254
+ if (iconsObj.shortcut) {
255
+ const shortcutList = Array.isArray(iconsObj.shortcut) ? iconsObj.shortcut : [iconsObj.shortcut];
256
+ shortcutList.forEach((icon, index) => addIcon(icon, 'shortcut icon', index));
257
+ }
258
+ if (iconsObj.apple) {
259
+ const appleList = Array.isArray(iconsObj.apple) ? iconsObj.apple : [iconsObj.apple];
260
+ appleList.forEach((icon, index) => addIcon(icon, 'apple-touch-icon', index));
261
+ }
262
+ }
263
+ return elements;
264
+ }
265
+ function generateVerificationMeta(verification) {
266
+ if (!verification)
267
+ return [];
268
+ const elements = [];
269
+ if (verification.google) {
270
+ const values = Array.isArray(verification.google) ? verification.google : [verification.google];
271
+ values.forEach((value, index) => {
272
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "google-site-verification", content: value }, `google-site-verification-${index}`));
273
+ });
274
+ }
275
+ if (verification.yandex) {
276
+ const values = Array.isArray(verification.yandex) ? verification.yandex : [verification.yandex];
277
+ values.forEach((value, index) => {
278
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "yandex-verification", content: value }, `yandex-verification-${index}`));
279
+ });
280
+ }
281
+ if (verification.bing) {
282
+ const values = Array.isArray(verification.bing) ? verification.bing : [verification.bing];
283
+ values.forEach((value, index) => {
284
+ elements.push((0, jsx_runtime_1.jsx)("meta", { name: "msvalidate.01", content: value }, `msvalidate.01-${index}`));
285
+ });
286
+ }
287
+ return elements;
288
+ }
289
+ function generateAlternateLinks(alternates, base) {
290
+ if (!alternates)
291
+ return [];
292
+ const elements = [];
293
+ // Canonical
294
+ if (alternates.canonical) {
295
+ elements.push((0, jsx_runtime_1.jsx)("link", { rel: "canonical", href: resolveUrl(alternates.canonical, base) || '' }, "canonical"));
296
+ }
297
+ // Language alternates
298
+ if (alternates.languages) {
299
+ Object.entries(alternates.languages).forEach(([lang, url]) => {
300
+ const urls = Array.isArray(url) ? url : [url];
301
+ urls.forEach((u, index) => {
302
+ elements.push((0, jsx_runtime_1.jsx)("link", { rel: "alternate", hrefLang: lang, href: resolveUrl(u, base) || '' }, `alternate-${lang}-${index}`));
303
+ });
304
+ });
305
+ }
306
+ return elements;
307
+ }
308
+ /**
309
+ * Renders metadata as React head elements.
310
+ * Returns an array of elements to be placed in <head>.
311
+ */
312
+ function MetadataRenderer({ metadata, parentTemplate }) {
313
+ const base = metadata.metadataBase;
314
+ const title = resolveTitle(metadata.title, parentTemplate);
315
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [title && (0, jsx_runtime_1.jsx)("title", { children: title }), generateBasicMeta(metadata), generateAuthorMeta(metadata.authors), generateRobotsMeta(metadata.robots), generateOpenGraphMeta(metadata.openGraph, base), generateTwitterMeta(metadata.twitter), generateIconLinks(metadata.icons), generateVerificationMeta(metadata.verification), generateAlternateLinks(metadata.alternates, base), metadata.manifest && ((0, jsx_runtime_1.jsx)("link", { rel: "manifest", href: resolveUrl(metadata.manifest, base) || '' }))] }));
316
+ }
317
+ /**
318
+ * Converts metadata to HTML string for SSR injection.
319
+ */
320
+ function generateMetadataHtml(metadata, parentTemplate) {
321
+ const { renderToStaticMarkup } = require('react-dom/server');
322
+ return renderToStaticMarkup((0, jsx_runtime_1.jsx)(MetadataRenderer, { metadata: metadata, parentTemplate: parentTemplate }));
323
+ }
324
+ exports.default = MetadataRenderer;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Vista Metadata Module
3
+ *
4
+ * Re-exports all metadata-related types and utilities.
5
+ */
6
+ export * from './types';
7
+ export { MetadataRenderer, generateMetadataHtml } from './generate';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Vista Metadata Module
4
+ *
5
+ * Re-exports all metadata-related types and utilities.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.generateMetadataHtml = exports.MetadataRenderer = void 0;
23
+ __exportStar(require("./types"), exports);
24
+ var generate_1 = require("./generate");
25
+ Object.defineProperty(exports, "MetadataRenderer", { enumerable: true, get: function () { return generate_1.MetadataRenderer; } });
26
+ Object.defineProperty(exports, "generateMetadataHtml", { enumerable: true, get: function () { return generate_1.generateMetadataHtml; } });