@vezham/config 26.0.0-alpha.5 → 26.0.0-alpha.6

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 (169) hide show
  1. package/README.md +14 -0
  2. package/dist/lib/deploy/cli.d.ts +3 -0
  3. package/dist/lib/deploy/cli.d.ts.map +1 -0
  4. package/dist/lib/deploy/cli.js +12 -0
  5. package/dist/lib/deploy/firebase.d.ts +3 -0
  6. package/dist/lib/deploy/firebase.d.ts.map +1 -0
  7. package/dist/lib/deploy/firebase.js +106 -0
  8. package/dist/lib/deploy/index.d.ts +4 -0
  9. package/dist/lib/deploy/index.d.ts.map +1 -0
  10. package/dist/lib/deploy/index.js +42 -0
  11. package/dist/lib/deploy/paths.d.ts +3 -0
  12. package/dist/lib/deploy/paths.d.ts.map +1 -0
  13. package/dist/lib/deploy/paths.js +6 -0
  14. package/dist/lib/deploy/presets.d.ts +5 -0
  15. package/dist/lib/deploy/presets.d.ts.map +1 -0
  16. package/dist/lib/deploy/presets.js +10 -0
  17. package/dist/lib/deploy/types.d.ts +97 -0
  18. package/dist/lib/deploy/types.d.ts.map +1 -0
  19. package/dist/lib/deploy/vercel.d.ts +3 -0
  20. package/dist/lib/deploy/vercel.d.ts.map +1 -0
  21. package/dist/lib/deploy/vercel.js +47 -0
  22. package/dist/lib/framework.d.ts +3 -0
  23. package/dist/lib/framework.d.ts.map +1 -0
  24. package/dist/lib/framework.js +7 -0
  25. package/dist/lib/i18n.d.ts +6 -0
  26. package/dist/lib/i18n.d.ts.map +1 -0
  27. package/dist/lib/i18n.js +11 -0
  28. package/dist/lib/integrations/next/index.d.ts +4 -0
  29. package/dist/lib/integrations/next/index.d.ts.map +1 -0
  30. package/dist/lib/integrations/next/index.js +29 -0
  31. package/dist/lib/integrations/playwright/index.d.ts +11 -0
  32. package/dist/lib/integrations/playwright/index.d.ts.map +1 -0
  33. package/dist/lib/integrations/playwright/index.js +77 -0
  34. package/dist/lib/integrations/playwright/test.d.ts +5 -0
  35. package/dist/lib/integrations/playwright/test.d.ts.map +1 -0
  36. package/dist/lib/integrations/playwright/test.js +23 -0
  37. package/dist/lib/integrations/vite/index.d.ts +12 -0
  38. package/dist/lib/integrations/vite/index.d.ts.map +1 -0
  39. package/dist/lib/integrations/vite/index.js +34 -0
  40. package/dist/lib/integrations/vite-lib/base.d.ts +3 -0
  41. package/dist/lib/integrations/vite-lib/base.d.ts.map +1 -0
  42. package/dist/lib/integrations/vite-lib/base.js +31 -0
  43. package/dist/lib/integrations/vite-lib/index.d.ts +3 -0
  44. package/dist/lib/integrations/vite-lib/index.d.ts.map +1 -0
  45. package/dist/lib/integrations/vite-lib/index.js +42 -0
  46. package/dist/lib/integrations/vite-lib/react.d.ts +3 -0
  47. package/dist/lib/integrations/vite-lib/react.d.ts.map +1 -0
  48. package/dist/lib/integrations/vite-lib/react.js +10 -0
  49. package/dist/lib/integrations/vitest/framework.d.ts +4 -0
  50. package/dist/lib/integrations/vitest/framework.d.ts.map +1 -0
  51. package/dist/lib/integrations/vitest/framework.js +5 -0
  52. package/dist/lib/integrations/vitest/frameworks/docs-plugins.d.ts +3 -0
  53. package/dist/lib/integrations/vitest/frameworks/docs-plugins.d.ts.map +1 -0
  54. package/dist/lib/integrations/vitest/frameworks/docs-plugins.js +27 -0
  55. package/dist/lib/integrations/vitest/frameworks/docs.d.ts +3 -0
  56. package/dist/lib/integrations/vitest/frameworks/docs.d.ts.map +1 -0
  57. package/dist/lib/integrations/vitest/frameworks/docs.js +5 -0
  58. package/dist/lib/integrations/vitest/frameworks/next.d.ts +3 -0
  59. package/dist/lib/integrations/vitest/frameworks/next.d.ts.map +1 -0
  60. package/dist/lib/integrations/vitest/frameworks/next.js +5 -0
  61. package/dist/lib/integrations/vitest/frameworks/react.d.ts +3 -0
  62. package/dist/lib/integrations/vitest/frameworks/react.d.ts.map +1 -0
  63. package/dist/lib/integrations/vitest/frameworks/react.js +5 -0
  64. package/dist/lib/integrations/vitest/index.d.ts +4 -0
  65. package/dist/lib/integrations/vitest/index.d.ts.map +1 -0
  66. package/dist/lib/integrations/vitest/index.js +4 -0
  67. package/dist/lib/integrations/vitest/setup/next.d.ts +2 -0
  68. package/dist/lib/integrations/vitest/setup/next.d.ts.map +1 -0
  69. package/dist/lib/integrations/vitest/setup/next.js +11 -0
  70. package/dist/lib/integrations/vitest/setup/react.d.ts +2 -0
  71. package/dist/lib/integrations/vitest/setup/react.d.ts.map +1 -0
  72. package/dist/lib/integrations/vitest/setup/react.js +36 -0
  73. package/dist/lib/integrations/vitest/shared.d.ts +3 -0
  74. package/dist/lib/integrations/vitest/shared.d.ts.map +1 -0
  75. package/dist/lib/integrations/vitest/shared.js +24 -0
  76. package/dist/lib/metadata/cli.d.ts +3 -0
  77. package/dist/lib/metadata/cli.d.ts.map +1 -0
  78. package/dist/lib/metadata/cli.js +13 -0
  79. package/dist/lib/metadata/env.d.ts +9 -0
  80. package/dist/lib/metadata/env.d.ts.map +1 -0
  81. package/dist/lib/metadata/env.js +36 -0
  82. package/dist/lib/metadata/html.d.ts +3 -0
  83. package/dist/lib/metadata/html.d.ts.map +1 -0
  84. package/dist/lib/metadata/html.js +96 -0
  85. package/dist/lib/metadata/index.d.ts +7 -0
  86. package/dist/lib/metadata/index.d.ts.map +1 -0
  87. package/dist/lib/metadata/index.js +61 -0
  88. package/dist/lib/metadata/next.d.ts +79 -0
  89. package/dist/lib/metadata/next.d.ts.map +1 -0
  90. package/dist/lib/metadata/next.js +106 -0
  91. package/dist/lib/metadata/public.d.ts +3 -0
  92. package/dist/lib/metadata/public.d.ts.map +1 -0
  93. package/dist/lib/metadata/public.js +107 -0
  94. package/dist/lib/metadata/render.d.ts +7 -0
  95. package/dist/lib/metadata/render.d.ts.map +1 -0
  96. package/dist/lib/metadata/render.js +37 -0
  97. package/dist/lib/metadata/runtime.d.ts +68 -0
  98. package/dist/lib/metadata/runtime.d.ts.map +1 -0
  99. package/dist/lib/metadata/runtime.js +134 -0
  100. package/dist/lib/metadata/tanstack.d.ts +71 -0
  101. package/dist/lib/metadata/tanstack.d.ts.map +1 -0
  102. package/dist/lib/metadata/tanstack.js +194 -0
  103. package/dist/lib/metadata/templates/not-found.html +224 -0
  104. package/dist/lib/metadata/templates/offline.html +210 -0
  105. package/dist/lib/metadata/types.d.ts +118 -0
  106. package/dist/lib/metadata/types.d.ts.map +1 -0
  107. package/dist/lib/navigation/app-menu.d.ts +2 -0
  108. package/dist/lib/navigation/app-menu.d.ts.map +1 -0
  109. package/dist/lib/navigation/app-menu.js +45 -0
  110. package/dist/lib/navigation/control-center.d.ts +2 -0
  111. package/dist/lib/navigation/control-center.d.ts.map +1 -0
  112. package/dist/lib/navigation/control-center.js +66 -0
  113. package/dist/lib/navigation/index.d.ts +5 -0
  114. package/dist/lib/navigation/index.d.ts.map +1 -0
  115. package/dist/lib/navigation/index.js +59 -0
  116. package/dist/lib/navigation/toolbar.d.ts +2 -0
  117. package/dist/lib/navigation/toolbar.d.ts.map +1 -0
  118. package/dist/lib/navigation/toolbar.js +78 -0
  119. package/dist/lib/presets/app/index.d.ts +21 -0
  120. package/dist/lib/presets/app/index.d.ts.map +1 -0
  121. package/dist/lib/presets/app/index.js +114 -0
  122. package/dist/lib/presets/cdn/index.d.ts +2 -0
  123. package/dist/lib/presets/cdn/index.d.ts.map +1 -0
  124. package/dist/lib/presets/cdn/index.js +2 -0
  125. package/dist/lib/presets/docs/cli.d.ts +3 -0
  126. package/dist/lib/presets/docs/cli.d.ts.map +1 -0
  127. package/dist/lib/presets/docs/cli.js +18 -0
  128. package/dist/lib/presets/docs/config.d.ts +40 -0
  129. package/dist/lib/presets/docs/config.d.ts.map +1 -0
  130. package/dist/lib/presets/docs/config.js +39 -0
  131. package/dist/lib/presets/docs/files.d.ts +2 -0
  132. package/dist/lib/presets/docs/files.d.ts.map +1 -0
  133. package/dist/lib/presets/docs/files.js +13 -0
  134. package/dist/lib/presets/docs/index.d.ts +7 -0
  135. package/dist/lib/presets/docs/index.d.ts.map +1 -0
  136. package/dist/lib/presets/docs/index.js +6 -0
  137. package/dist/lib/presets/docs/mdx-path.d.ts +7 -0
  138. package/dist/lib/presets/docs/mdx-path.d.ts.map +1 -0
  139. package/dist/lib/presets/docs/mdx-path.js +19 -0
  140. package/dist/lib/presets/docs/og-image.d.ts +9 -0
  141. package/dist/lib/presets/docs/og-image.d.ts.map +1 -0
  142. package/dist/lib/presets/docs/og-image.js +88 -0
  143. package/dist/lib/presets/docs/og-output.d.ts +5 -0
  144. package/dist/lib/presets/docs/og-output.d.ts.map +1 -0
  145. package/dist/lib/presets/docs/og-output.js +34 -0
  146. package/dist/lib/presets/docs/og.d.ts +9 -0
  147. package/dist/lib/presets/docs/og.d.ts.map +1 -0
  148. package/dist/lib/presets/docs/og.js +112 -0
  149. package/dist/lib/presets/docs/openapi.d.ts +3 -0
  150. package/dist/lib/presets/docs/openapi.d.ts.map +1 -0
  151. package/dist/lib/presets/docs/openapi.js +105 -0
  152. package/dist/lib/presets/docs/routes.d.ts +7 -0
  153. package/dist/lib/presets/docs/routes.d.ts.map +1 -0
  154. package/dist/lib/presets/docs/routes.js +109 -0
  155. package/dist/lib/presets/docs/types.d.ts +31 -0
  156. package/dist/lib/presets/docs/types.d.ts.map +1 -0
  157. package/dist/lib/presets/docs/vite.d.ts +11 -0
  158. package/dist/lib/presets/docs/vite.d.ts.map +1 -0
  159. package/dist/lib/presets/docs/vite.js +78 -0
  160. package/dist/lib/presets/files.d.ts +5 -0
  161. package/dist/lib/presets/files.d.ts.map +1 -0
  162. package/dist/lib/presets/files.js +21 -0
  163. package/dist/lib/presets/route-files.d.ts +22 -0
  164. package/dist/lib/presets/route-files.d.ts.map +1 -0
  165. package/dist/lib/presets/route-files.js +49 -0
  166. package/dist/lib/yaml-config.d.ts +2 -0
  167. package/dist/lib/yaml-config.d.ts.map +1 -0
  168. package/dist/lib/yaml-config.js +6 -0
  169. package/package.json +99 -4
@@ -0,0 +1,79 @@
1
+ import type { VxConfig } from './types';
2
+ export declare const getNextMetadata: (config: VxConfig, projectRoot?: string) => {
3
+ metadataBase: URL | undefined;
4
+ title: string;
5
+ description: string;
6
+ applicationName: string;
7
+ authors: {
8
+ name: string;
9
+ url: string;
10
+ }[] | undefined;
11
+ keywords: string[];
12
+ manifest: string;
13
+ icons: {
14
+ icon: ({
15
+ url: string;
16
+ type: string;
17
+ media: string;
18
+ color?: undefined;
19
+ } | {
20
+ url: string;
21
+ type: string;
22
+ media: string;
23
+ color: string;
24
+ })[];
25
+ shortcut: {
26
+ url: string;
27
+ media: string;
28
+ }[];
29
+ apple: {
30
+ url: string;
31
+ }[];
32
+ other: {
33
+ rel: string;
34
+ url: string;
35
+ media: string;
36
+ color: string;
37
+ }[];
38
+ };
39
+ appleWebApp: {
40
+ title: string;
41
+ capable: boolean;
42
+ startupImage: {
43
+ media: string;
44
+ url: string;
45
+ }[];
46
+ };
47
+ openGraph: {
48
+ type: string;
49
+ title: string;
50
+ description: string;
51
+ images: string[];
52
+ url: string;
53
+ };
54
+ twitter: {
55
+ creator: string;
56
+ site: string;
57
+ title: string;
58
+ description: string;
59
+ images: string[];
60
+ card: string;
61
+ };
62
+ other: {
63
+ 'mobile-web-app-capable': string;
64
+ 'msapplication-config': string;
65
+ 'msapplication-starturl': string;
66
+ 'twitter:url': string;
67
+ };
68
+ };
69
+ export declare const getNextViewport: (config: VxConfig, projectRoot?: string) => {
70
+ width: string;
71
+ initialScale: number;
72
+ maximumScale: number;
73
+ userScalable: boolean;
74
+ themeColor: {
75
+ media: string;
76
+ color: string;
77
+ }[];
78
+ };
79
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/next.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,eAAe,GAC1B,QAAQ,QAAQ,EAChB,oBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiG5B,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,QAAQ,QAAQ,EAChB,oBAA2B;;;;;;;;;CAoB5B,CAAA"}
@@ -0,0 +1,106 @@
1
+ import { getRuntimeMetadata } from "./runtime.js";
2
+ //#region src/lib/metadata/next.ts
3
+ var getNextMetadata = (config, projectRoot = process.cwd()) => {
4
+ const metadata = getRuntimeMetadata(config, projectRoot);
5
+ return {
6
+ metadataBase: metadata.url ? new URL(metadata.url) : void 0,
7
+ title: metadata.title,
8
+ description: metadata.description,
9
+ applicationName: metadata.microsoft.applicationName,
10
+ authors: metadata.author?.name ? [{
11
+ name: metadata.author.name,
12
+ url: metadata.author.url
13
+ }] : void 0,
14
+ keywords: metadata.keywords,
15
+ manifest: metadata.manifest,
16
+ icons: {
17
+ icon: [
18
+ {
19
+ url: metadata.icons.faviconLight,
20
+ type: "image/x-icon",
21
+ media: "(prefers-color-scheme: light)"
22
+ },
23
+ {
24
+ url: metadata.icons.faviconDark,
25
+ type: "image/x-icon",
26
+ media: "(prefers-color-scheme: dark)"
27
+ },
28
+ {
29
+ url: metadata.icons.maskIcon,
30
+ type: "image/svg+xml",
31
+ media: "(prefers-color-scheme: light)",
32
+ color: "black"
33
+ },
34
+ {
35
+ url: metadata.icons.maskIcon,
36
+ type: "image/svg+xml",
37
+ media: "(prefers-color-scheme: dark)",
38
+ color: "white"
39
+ }
40
+ ],
41
+ shortcut: [{
42
+ url: metadata.icons.faviconLight,
43
+ media: "(prefers-color-scheme: light)"
44
+ }, {
45
+ url: metadata.icons.faviconDark,
46
+ media: "(prefers-color-scheme: dark)"
47
+ }],
48
+ apple: [{ url: metadata.apple.touchIcon }],
49
+ other: [{
50
+ rel: "mask-icon",
51
+ url: metadata.icons.maskIcon,
52
+ media: "(prefers-color-scheme: light)",
53
+ color: "black"
54
+ }, {
55
+ rel: "mask-icon",
56
+ url: metadata.icons.maskIcon,
57
+ media: "(prefers-color-scheme: dark)",
58
+ color: "white"
59
+ }]
60
+ },
61
+ appleWebApp: {
62
+ title: metadata.apple.title,
63
+ capable: metadata.apple.capable,
64
+ startupImage: metadata.apple.startupImages
65
+ },
66
+ openGraph: {
67
+ type: metadata.openGraph.type,
68
+ title: metadata.openGraph.title,
69
+ description: metadata.openGraph.description,
70
+ images: [metadata.openGraph.image],
71
+ url: metadata.openGraph.url
72
+ },
73
+ twitter: {
74
+ creator: metadata.twitter.creator,
75
+ site: metadata.twitter.site,
76
+ title: metadata.twitter.title,
77
+ description: metadata.twitter.description,
78
+ images: [metadata.twitter.image],
79
+ card: metadata.twitter.card
80
+ },
81
+ other: {
82
+ "mobile-web-app-capable": metadata.mobileWebAppCapable ? "yes" : "no",
83
+ "msapplication-config": metadata.microsoft.config,
84
+ "msapplication-starturl": metadata.microsoft.startUrl,
85
+ "twitter:url": metadata.twitter.url
86
+ }
87
+ };
88
+ };
89
+ var getNextViewport = (config, projectRoot = process.cwd()) => {
90
+ const metadata = getRuntimeMetadata(config, projectRoot);
91
+ return {
92
+ width: "device-width",
93
+ initialScale: 1,
94
+ maximumScale: 1.5,
95
+ userScalable: true,
96
+ themeColor: [{
97
+ media: "(prefers-color-scheme: light)",
98
+ color: metadata.theme.lightColor
99
+ }, {
100
+ media: "(prefers-color-scheme: dark)",
101
+ color: metadata.theme.darkColor
102
+ }]
103
+ };
104
+ };
105
+ //#endregion
106
+ export { getNextMetadata, getNextViewport };
@@ -0,0 +1,3 @@
1
+ import type { MetadataFile, VxConfig } from './types';
2
+ export declare const getPublicMetadataFiles: (config: VxConfig, projectRoot: string) => MetadataFile[];
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/public.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAiErD,eAAO,MAAM,sBAAsB,GACjC,QAAQ,QAAQ,EAChB,aAAa,MAAM,KAClB,YAAY,EA8Cd,CAAA"}
@@ -0,0 +1,107 @@
1
+ import { createVersionedAssetUrl, getProjectAssetBaseUrl, getStaticAssetUrl, lowerFirst, normalizeIcons, toAssetUrl } from "./runtime.js";
2
+ import { generatedNotice, renderMetadataTemplate, stringifyManifest } from "./render.js";
3
+ import path from "node:path";
4
+ //#region src/lib/metadata/public.ts
5
+ var createManifest = (config, versionedAssetUrl) => {
6
+ const { core, pwa } = config;
7
+ return {
8
+ manifest_version: 1,
9
+ version: core.version,
10
+ id: core.id,
11
+ name: core.name,
12
+ short_name: core.shortName,
13
+ description: lowerFirst(core.description),
14
+ scope: pwa.scope,
15
+ start_url: `${pwa.startUrl}?utm_source=homescreen&utm_medium=shortcut&pwa=true`,
16
+ display: pwa.display,
17
+ orientation: pwa.orientation,
18
+ theme_color: config.branding.themeColor,
19
+ background_color: config.branding.backgroundColor,
20
+ categories: pwa.categories,
21
+ icons: normalizeIcons(pwa.icons).map((icon) => ({
22
+ src: toAssetUrl(icon.src, versionedAssetUrl),
23
+ sizes: icon.sizes,
24
+ type: icon.type
25
+ })),
26
+ screenshots: pwa.screenshots.map((screenshot) => ({
27
+ src: toAssetUrl(screenshot.src, versionedAssetUrl),
28
+ type: screenshot.type,
29
+ sizes: screenshot.sizes
30
+ })),
31
+ shortcuts: pwa.shortcuts.map((shortcut) => ({
32
+ name: shortcut.name,
33
+ short_name: shortcut.shortName,
34
+ url: `${shortcut.url}?utm_source=jumplist&utm_medium=shortcut&pwa=true`,
35
+ icons: normalizeIcons(shortcut.icons).map((icon) => ({
36
+ src: toAssetUrl(icon.src, versionedAssetUrl),
37
+ sizes: icon.sizes,
38
+ type: icon.type
39
+ }))
40
+ }))
41
+ };
42
+ };
43
+ var renderBrowserConfig = (versionedAssetUrl) => {
44
+ return `<?xml version="1.0" encoding="utf-8" ?>
45
+ <!-- ${generatedNotice} -->
46
+ <browserconfig>
47
+ <msapplication>
48
+ <tile>
49
+ <square70x70logo
50
+ src="${versionedAssetUrl("icons/icon-square-70x70.png")}" />
51
+ <square150x150logo
52
+ src="${versionedAssetUrl("icons/icon-square-150x150.png")}" />
53
+ <wide310x150logo
54
+ src="${versionedAssetUrl("icons/icon-square-310x150.png")}" />
55
+ <square310x310logo
56
+ src="${versionedAssetUrl("icons/icon-square-310x310.png")}" />
57
+ <tilecolor>transparent</tilecolor>
58
+ </tile>
59
+ </msapplication>
60
+ </browserconfig>
61
+ `;
62
+ };
63
+ var getPublicMetadataFiles = (config, projectRoot) => {
64
+ const { core } = config;
65
+ const publicDir = path.resolve(projectRoot, "public");
66
+ const versionedAssetUrl = createVersionedAssetUrl(getProjectAssetBaseUrl(projectRoot), core.version);
67
+ const offlinePage = renderMetadataTemplate("offline.html", {
68
+ generatedNotice,
69
+ author: core.publisher.name,
70
+ appName: core.name,
71
+ imageUrl: getStaticAssetUrl("vassets/no-internet.svg", core.version)
72
+ });
73
+ const notFoundPage = renderMetadataTemplate("not-found.html", {
74
+ generatedNotice,
75
+ author: core.publisher.name,
76
+ appName: core.name,
77
+ imageUrl: getStaticAssetUrl("vassets/no-internet.svg", core.version)
78
+ });
79
+ return [
80
+ {
81
+ path: path.join(publicDir, "manifest.webmanifest"),
82
+ content: `${stringifyManifest(createManifest(config, versionedAssetUrl))}\n`
83
+ },
84
+ {
85
+ path: path.join(publicDir, "browserconfig.xml"),
86
+ content: renderBrowserConfig(versionedAssetUrl)
87
+ },
88
+ {
89
+ path: path.join(publicDir, "robots.txt"),
90
+ content: `# ${generatedNotice}\n# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n`
91
+ },
92
+ {
93
+ path: path.join(publicDir, "sw.js"),
94
+ content: `/* ${generatedNotice} */\n/* global importScripts */\nimportScripts('https://static.cdn.vezham.com/workers/sw.js?vx=${core.version}')\n`
95
+ },
96
+ {
97
+ path: path.join(publicDir, "offline.html"),
98
+ content: offlinePage
99
+ },
100
+ {
101
+ path: path.join(publicDir, "404.html"),
102
+ content: notFoundPage
103
+ }
104
+ ];
105
+ };
106
+ //#endregion
107
+ export { getPublicMetadataFiles };
@@ -0,0 +1,7 @@
1
+ import { type VxConfig } from './types';
2
+ export declare const generatedNotice = "Generated by Vx metadata. DO NOT EDIT.";
3
+ export declare const stringifyManifest: (manifest: Record<string, unknown>) => string;
4
+ export declare const escapeHtml: (value: string) => string;
5
+ export declare const renderMetadataTemplate: (name: string, values: Record<string, string>) => string;
6
+ export declare const getGeneratedMetadataModule: (config: VxConfig, projectRoot?: string) => string;
7
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/render.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,eAAe,2CAA2C,CAAA;AAEvE,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAIhE,CAAA;AAIH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,WAKZ,CAAA;AAO5B,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAY1B,CAAA;AAEN,eAAO,MAAM,0BAA0B,GACrC,QAAQ,QAAQ,EAChB,oBAA2B,WAsB3B,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { resolveI18n } from "../i18n.js";
2
+ import { resolveDocsConfig } from "../presets/docs/config.js";
3
+ import { getRuntimeMetadata } from "./runtime.js";
4
+ import { getNextMetadata, getNextViewport } from "./next.js";
5
+ import { getTanStackHead } from "./tanstack.js";
6
+ import { readFileSync } from "node:fs";
7
+ import path from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ //#region src/lib/metadata/render.ts
10
+ var generatedNotice = "Generated by Vx metadata. DO NOT EDIT.";
11
+ var stringifyManifest = (manifest) => JSON.stringify(manifest, null, 2).replace("\"categories\": [\n \"productivity\",\n \"personalization\",\n \"utilities\"\n ]", "\"categories\": [\"productivity\", \"personalization\", \"utilities\"]");
12
+ var stringifyTs = (value) => JSON.stringify(value, null, 2);
13
+ var escapeHtml = (value) => value.replaceAll("&", "&amp;").replaceAll("\"", "&quot;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
14
+ var metadataTemplatesDir = path.join(path.dirname(fileURLToPath(import.meta.url)), "templates");
15
+ var renderMetadataTemplate = (name, values) => readFileSync(path.join(metadataTemplatesDir, name), "utf8").replace(/^[ \t]*<!-- prettier-ignore -->\r?\n/gm, "").replaceAll(/\{\{(\w+)\}\}/g, (_, key) => {
16
+ const value = values[key];
17
+ if (value === void 0) throw new Error(`Missing metadata template value: ${key}`);
18
+ return escapeHtml(value);
19
+ });
20
+ var getGeneratedMetadataModule = (config, projectRoot = process.cwd()) => `// ${generatedNotice}
21
+
22
+ export const vxMetadata = ${stringifyTs(getRuntimeMetadata(config, projectRoot))} as const
23
+
24
+ export const vxCore = ${stringifyTs(config.core)} as const
25
+
26
+ ${config.framework === "tanstack-docs" ? `export const vxDocs = ${stringifyTs(resolveDocsConfig(config.docs))} as const` : ""}
27
+
28
+ export const vxI18n = ${stringifyTs(resolveI18n(config.i18n))} as const
29
+
30
+ export type Locale = (typeof vxI18n.languages)[number]
31
+ ${config.framework === "next" ? `
32
+ export const nextMetadata = ${stringifyTs(getNextMetadata(config, projectRoot))}
33
+
34
+ export const nextViewport = ${stringifyTs(getNextViewport(config, projectRoot))}` : config.framework === "tanstack" || config.framework === "tanstack-docs" ? `
35
+ export const tanstackHead = ${stringifyTs(getTanStackHead(config, projectRoot))}` : ""}`;
36
+ //#endregion
37
+ export { escapeHtml, generatedNotice, getGeneratedMetadataModule, renderMetadataTemplate, stringifyManifest };
@@ -0,0 +1,68 @@
1
+ import { type VxConfig, type VxIcon, type VxIconSource } from './types';
2
+ export declare const lowerFirst: (value: string) => string;
3
+ export declare const getProjectAssetBaseUrl: (projectRoot: string) => string;
4
+ export declare const createVersionedAssetUrl: (baseUrl: string, version: string) => (assetPath: string) => string;
5
+ export declare const getStaticAssetUrl: (assetPath: string, version: string) => string;
6
+ export declare const toAssetUrl: (assetPath: string, versionedAssetUrl: (assetPath: string) => string) => string;
7
+ type SocialImageSource = 'default' | 'path' | 'url';
8
+ export declare const normalizeIcons: (icons: VxIconSource) => VxIcon[];
9
+ export declare const getRuntimeMetadata: (config: VxConfig, projectRoot?: string) => {
10
+ title: string;
11
+ description: string;
12
+ url: string;
13
+ manifest: string;
14
+ browserConfig: string;
15
+ startUrl: string;
16
+ author: {
17
+ name: string;
18
+ url: string;
19
+ };
20
+ keywords: string[];
21
+ theme: {
22
+ lightColor: string;
23
+ darkColor: string;
24
+ lightBackgroundColor: string;
25
+ darkBackgroundColor: string;
26
+ };
27
+ mobileWebAppCapable: boolean;
28
+ apple: {
29
+ title: string;
30
+ capable: boolean;
31
+ touchIcon: string;
32
+ startupImages: {
33
+ media: string;
34
+ url: string;
35
+ }[];
36
+ };
37
+ icons: {
38
+ faviconLight: string;
39
+ faviconDark: string;
40
+ maskIcon: string;
41
+ };
42
+ microsoft: {
43
+ applicationName: string;
44
+ config: string;
45
+ startUrl: string;
46
+ };
47
+ openGraph: {
48
+ type: string;
49
+ title: string;
50
+ description: string;
51
+ image: string;
52
+ imageSource: SocialImageSource;
53
+ url: string;
54
+ };
55
+ twitter: {
56
+ creator: string;
57
+ site: string;
58
+ title: string;
59
+ description: string;
60
+ image: string;
61
+ url: string;
62
+ card: string;
63
+ };
64
+ defaultLanguage: string;
65
+ languages: string[];
66
+ };
67
+ export {};
68
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,YAAY,EAGlB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,WAC6B,CAAA;AAIrE,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,WACmC,CAAA;AAE7F,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,SAAS,MAAM,MAG9D,WAAW,MAAM,WAE1B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,EAAE,SAAS,MAAM,WAC+B,CAAA;AAEnG,eAAO,MAAM,UAAU,GACrB,WAAW,MAAM,EACjB,mBAAmB,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,WAIhB,CAAA;AAElC,KAAK,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,CAAA;AAyEnD,eAAO,MAAM,cAAc,GAAI,OAAO,YAAY,KAAG,MAAM,EAU1D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,QAAQ,EAChB,oBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiF5B,CAAA"}
@@ -0,0 +1,134 @@
1
+ import { resolveI18n } from "../i18n.js";
2
+ import path from "node:path";
3
+ //#region src/lib/metadata/runtime.ts
4
+ var lowerFirst = (value) => value ? `${value.charAt(0).toLowerCase()}${value.slice(1)}` : value;
5
+ var normalizePath = (value) => value.split(path.sep).join("/");
6
+ var getProjectAssetBaseUrl = (projectRoot) => `https://static.cdn.vezham.com/${normalizePath(path.relative(process.cwd(), projectRoot))}`;
7
+ var createVersionedAssetUrl = (baseUrl, version) => {
8
+ const versionParam = `vx=${encodeURIComponent(version)}`;
9
+ return (assetPath) => `${baseUrl.replace(/\/$/, "")}/${assetPath.replace(/^\//, "")}?${versionParam}`;
10
+ };
11
+ var getStaticAssetUrl = (assetPath, version) => `https://static.cdn.vezham.com/${assetPath.replace(/^\//, "")}?vx=${encodeURIComponent(version)}`;
12
+ var toAssetUrl = (assetPath, versionedAssetUrl) => /^https?:\/\//.test(assetPath) || assetPath.startsWith("/") ? assetPath : versionedAssetUrl(assetPath);
13
+ var resolveSocialImage = (image) => {
14
+ const value = image?.trim();
15
+ if (!value) return {
16
+ source: "default",
17
+ url: "/og/image.png"
18
+ };
19
+ if (/^https?:\/\//i.test(value)) return {
20
+ source: "url",
21
+ url: value
22
+ };
23
+ return {
24
+ source: "path",
25
+ url: `/${value.replace(/^\/+/, "")}`
26
+ };
27
+ };
28
+ var getStartupImageMedia = (image) => {
29
+ if (image.media) return image.media;
30
+ return [
31
+ image.colorScheme ? `(prefers-color-scheme: ${image.colorScheme})` : void 0,
32
+ image.width ? `(device-width: ${image.width}px)` : void 0,
33
+ image.height ? `(device-height: ${image.height}px)` : void 0,
34
+ image.pixelRatio ? `(-webkit-device-pixel-ratio: ${image.pixelRatio})` : void 0
35
+ ].filter(Boolean).join(" and ");
36
+ };
37
+ var createStartupImagePath = (template, image) => template.replaceAll("{colorScheme}", image.colorScheme ?? "").replaceAll("{device}", image.device ?? "").replaceAll("{width}", String(image.width ?? "")).replaceAll("{height}", String(image.height ?? "")).replaceAll("{pixelRatio}", String(image.pixelRatio ?? ""));
38
+ var normalizeStartupImages = (startupImages) => {
39
+ if (Array.isArray(startupImages)) return startupImages;
40
+ return (startupImages.colorSchemes ?? ["light", "dark"]).flatMap((colorScheme) => startupImages.sizes.map((size) => {
41
+ const image = {
42
+ ...size,
43
+ colorScheme
44
+ };
45
+ const sourcePath = size.path ?? size.src ?? startupImages.path;
46
+ return {
47
+ ...image,
48
+ path: createStartupImagePath(sourcePath, image)
49
+ };
50
+ }));
51
+ };
52
+ var normalizeIcons = (icons) => {
53
+ if (Array.isArray(icons)) return icons;
54
+ return icons.sizes.map((size) => ({
55
+ src: icons.path.replaceAll("{size}", String(size)),
56
+ sizes: `${size}x${size}`,
57
+ type: icons.type
58
+ }));
59
+ };
60
+ var getRuntimeMetadata = (config, projectRoot = process.cwd()) => {
61
+ const { core, metadata, pwa } = config;
62
+ const { apple, microsoft } = metadata.platforms;
63
+ const { openGraph, twitter } = metadata.social;
64
+ const versionedAssetUrl = createVersionedAssetUrl(getProjectAssetBaseUrl(projectRoot), core.version);
65
+ const title = metadata.title;
66
+ const description = lowerFirst(core.description);
67
+ const lightThemeColor = metadata.theme.lightColor;
68
+ const darkThemeColor = metadata.theme.darkColor;
69
+ const lightBackgroundColor = metadata.theme.lightBackgroundColor;
70
+ const darkBackgroundColor = metadata.theme.darkBackgroundColor;
71
+ const faviconLight = versionedAssetUrl("favicon-light.png");
72
+ const faviconDark = versionedAssetUrl("favicon-dark.png");
73
+ const maskIcon = versionedAssetUrl("safari-pinned-tab.svg");
74
+ const appleTouchIcon = versionedAssetUrl(apple.touchIcon);
75
+ const openGraphImage = resolveSocialImage(openGraph.image);
76
+ const twitterImage = resolveSocialImage(twitter.image?.trim() ? twitter.image : openGraph.image);
77
+ const startupImages = normalizeStartupImages(apple.startupImages).map((image) => ({
78
+ media: getStartupImageMedia(image),
79
+ url: toAssetUrl(image.path ?? image.src ?? "", versionedAssetUrl)
80
+ }));
81
+ return {
82
+ ...resolveI18n(config.i18n),
83
+ title,
84
+ description,
85
+ url: core.url,
86
+ manifest: "/manifest.webmanifest",
87
+ browserConfig: "/browserconfig.xml",
88
+ startUrl: microsoft.startUrl ?? pwa.startUrl,
89
+ author: core.publisher,
90
+ keywords: metadata.keywords,
91
+ theme: {
92
+ lightColor: lightThemeColor,
93
+ darkColor: darkThemeColor,
94
+ lightBackgroundColor,
95
+ darkBackgroundColor
96
+ },
97
+ mobileWebAppCapable: apple.mobileWebAppCapable,
98
+ apple: {
99
+ title: core.name,
100
+ capable: apple.webAppCapable,
101
+ touchIcon: appleTouchIcon,
102
+ startupImages
103
+ },
104
+ icons: {
105
+ faviconLight,
106
+ faviconDark,
107
+ maskIcon
108
+ },
109
+ microsoft: {
110
+ applicationName: core.name,
111
+ config: "/browserconfig.xml",
112
+ startUrl: microsoft.startUrl
113
+ },
114
+ openGraph: {
115
+ type: openGraph.type,
116
+ title: core.name,
117
+ description,
118
+ image: openGraphImage.url,
119
+ imageSource: openGraphImage.source,
120
+ url: core.url
121
+ },
122
+ twitter: {
123
+ creator: twitter.creator,
124
+ site: twitter.site,
125
+ title: core.name,
126
+ description,
127
+ image: twitterImage.url,
128
+ url: core.url,
129
+ card: twitter.card
130
+ }
131
+ };
132
+ };
133
+ //#endregion
134
+ export { createVersionedAssetUrl, getProjectAssetBaseUrl, getRuntimeMetadata, getStaticAssetUrl, lowerFirst, normalizeIcons, toAssetUrl };
@@ -0,0 +1,71 @@
1
+ import type { VxConfig } from './types';
2
+ export declare const getTanStackHead: (config: VxConfig, projectRoot?: string) => {
3
+ meta: ({
4
+ charSet: string;
5
+ name?: undefined;
6
+ content?: undefined;
7
+ title?: undefined;
8
+ media?: undefined;
9
+ property?: undefined;
10
+ } | {
11
+ name: string;
12
+ content: string;
13
+ charSet?: undefined;
14
+ title?: undefined;
15
+ media?: undefined;
16
+ property?: undefined;
17
+ } | {
18
+ title: string;
19
+ charSet?: undefined;
20
+ name?: undefined;
21
+ content?: undefined;
22
+ media?: undefined;
23
+ property?: undefined;
24
+ } | {
25
+ name: string;
26
+ media: string;
27
+ content: string;
28
+ charSet?: undefined;
29
+ title?: undefined;
30
+ property?: undefined;
31
+ } | {
32
+ property: string;
33
+ content: string;
34
+ charSet?: undefined;
35
+ name?: undefined;
36
+ title?: undefined;
37
+ media?: undefined;
38
+ })[];
39
+ links: ({
40
+ rel: string;
41
+ href: string;
42
+ type?: undefined;
43
+ media?: undefined;
44
+ color?: undefined;
45
+ } | {
46
+ rel: string;
47
+ type: string;
48
+ media: string;
49
+ href: string;
50
+ color?: undefined;
51
+ } | {
52
+ rel: string;
53
+ media: string;
54
+ href: string;
55
+ type?: undefined;
56
+ color?: undefined;
57
+ } | {
58
+ rel: string;
59
+ type: string;
60
+ media: string;
61
+ href: string;
62
+ color: string;
63
+ } | {
64
+ rel: string;
65
+ media: string;
66
+ href: string;
67
+ color: string;
68
+ type?: undefined;
69
+ })[];
70
+ };
71
+ //# sourceMappingURL=tanstack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tanstack.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/tanstack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,eAAO,MAAM,eAAe,GAC1B,QAAQ,QAAQ,EAChB,oBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJ5B,CAAA"}