@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,34 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { defineConfig as defineConfig$1, mergeConfig } from "vite";
4
+ //#region src/lib/integrations/vite/index.ts
5
+ var findWorkspaceRoot = (startDir = process.cwd()) => {
6
+ let currentDir = path.resolve(startDir);
7
+ while (currentDir !== path.dirname(currentDir)) {
8
+ if (existsSync(path.join(currentDir, "pnpm-workspace.yaml"))) return currentDir;
9
+ currentDir = path.dirname(currentDir);
10
+ }
11
+ return path.resolve(startDir);
12
+ };
13
+ var getProjectPackageName = (projectRoot = process.cwd()) => {
14
+ const packageJsonFile = path.resolve(projectRoot, "package.json");
15
+ if (!existsSync(packageJsonFile)) return path.basename(projectRoot);
16
+ try {
17
+ return JSON.parse(readFileSync(packageJsonFile, "utf8")).name;
18
+ } catch {
19
+ return path.basename(projectRoot);
20
+ }
21
+ };
22
+ var getViteCacheDir = (projectRoot = process.cwd()) => path.resolve(findWorkspaceRoot(projectRoot), "node_modules/.vite", getProjectPackageName(projectRoot));
23
+ var getViteConfig = (projectRoot = process.cwd()) => ({
24
+ root: projectRoot,
25
+ cacheDir: getViteCacheDir(projectRoot),
26
+ test: {}
27
+ });
28
+ var createViteConfig = (getDefaults, overrides = {}) => defineConfig$1(async (env) => {
29
+ const resolvedOverrides = typeof overrides === "function" ? await overrides(env) : overrides;
30
+ return mergeConfig(getDefaults(path.resolve(String(resolvedOverrides.root ?? process.cwd())), env), resolvedOverrides);
31
+ });
32
+ var defineConfig = (overrides = {}) => createViteConfig(getViteConfig, overrides);
33
+ //#endregion
34
+ export { createViteConfig, defineConfig, getProjectPackageName, getViteCacheDir, getViteConfig };
@@ -0,0 +1,3 @@
1
+ import { type ViteConfigOverrides } from '../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigFnPromise;
3
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vite-lib/base.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,SAAS,CAAA;AAuBhB,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,uCAgB5D,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { getViteConfig } from "../vite/index.js";
2
+ import path from "node:path";
3
+ import { defineConfig, mergeConfig } from "vite";
4
+ import dts from "vite-plugin-dts";
5
+ //#region src/lib/integrations/vite-lib/base.ts
6
+ var getViteLibConfig = (projectRoot = process.cwd()) => ({
7
+ ...getViteConfig(projectRoot),
8
+ plugins: [dts({
9
+ entryRoot: path.join(projectRoot, "src"),
10
+ tsconfigPath: path.join(projectRoot, "tsconfig.lib.json")
11
+ })],
12
+ build: {
13
+ outDir: "./dist",
14
+ emptyOutDir: true,
15
+ reportCompressedSize: true,
16
+ commonjsOptions: { transformMixedEsModules: true },
17
+ lib: {
18
+ entry: path.join(projectRoot, "src/index.ts"),
19
+ fileName: "index",
20
+ formats: ["es"]
21
+ }
22
+ }
23
+ });
24
+ var defineConfig$1 = (overrides = {}) => defineConfig(async (env) => {
25
+ const resolved = typeof overrides === "function" ? await overrides(env) : overrides;
26
+ const defaults = getViteLibConfig(path.resolve(resolved.root ?? process.cwd()));
27
+ if (resolved.build?.lib && resolved.build.lib.formats && defaults.build?.lib) delete defaults.build.lib.formats;
28
+ return mergeConfig(defaults, resolved);
29
+ });
30
+ //#endregion
31
+ export { defineConfig$1 as defineConfig };
@@ -0,0 +1,3 @@
1
+ import type { ViteConfigOverrides } from '../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigFnPromise;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vite-lib/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAgC9D,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,uCA6C5D,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { defineConfig as defineConfig$2 } from "./base.js";
2
+ import { cpSync, existsSync, globSync, readFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { mergeConfig } from "vite";
5
+ //#region src/lib/integrations/vite-lib/index.ts
6
+ var getPackageEntries = (projectRoot) => {
7
+ const manifest = path.join(projectRoot, "package.json");
8
+ if (!existsSync(manifest)) return void 0;
9
+ const pkg = JSON.parse(readFileSync(manifest, "utf8"));
10
+ const files = Object.values(pkg.exports ?? {}).map((value) => typeof value === "string" ? value : value["@vx/fe-kit"] ?? value.types).filter((value) => Boolean(value?.startsWith("./src/"))).flatMap((pattern) => globSync(pattern, { cwd: projectRoot }));
11
+ for (const output of Object.values(pkg.bin ?? {})) files.push(output.replace("./dist/", "src/").replace(/\.js$/, ".ts"));
12
+ return Object.fromEntries(files.map((file) => [file.replace(/^\.?\/src\//, "").replace(/^src\//, "").replace(/\.tsx?$/, ""), path.resolve(projectRoot, file)]));
13
+ };
14
+ var defineConfig = (overrides = {}) => defineConfig$2(async (env) => {
15
+ const config = typeof overrides === "function" ? await overrides(env) : overrides;
16
+ const root = path.resolve(config.root ?? process.cwd());
17
+ return mergeConfig({
18
+ plugins: [{
19
+ name: "vezham:package-assets",
20
+ closeBundle() {
21
+ for (const file of globSync("src/**/*.{html,css}", { cwd: root })) cpSync(path.join(root, file), path.join(root, file.replace(/^src\//, "dist/")), { recursive: true });
22
+ }
23
+ }],
24
+ build: {
25
+ minify: false,
26
+ lib: {
27
+ entry: getPackageEntries(root),
28
+ fileName: (_format, name) => `${name}.js`
29
+ },
30
+ rolldownOptions: {
31
+ external: (id) => !id.startsWith(".") && !path.isAbsolute(id) && !id.startsWith("\0"),
32
+ output: {
33
+ preserveModules: true,
34
+ preserveModulesRoot: path.join(root, "src"),
35
+ entryFileNames: "[name].js"
36
+ }
37
+ }
38
+ }
39
+ }, config);
40
+ });
41
+ //#endregion
42
+ export { defineConfig };
@@ -0,0 +1,3 @@
1
+ import type { ViteConfigOverrides } from '../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigFnPromise;
3
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vite-lib/react.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGlD,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,uCAK5D,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { defineConfig as defineConfig$2 } from "./index.js";
2
+ import { mergeConfig } from "vite";
3
+ import react from "@vitejs/plugin-react-swc";
4
+ //#region src/lib/integrations/vite-lib/react.ts
5
+ var defineConfig = (overrides = {}) => defineConfig$2(async (env) => {
6
+ const resolved = typeof overrides === "function" ? await overrides(env) : overrides;
7
+ return mergeConfig({ plugins: [react()] }, resolved);
8
+ });
9
+ //#endregion
10
+ export { defineConfig };
@@ -0,0 +1,4 @@
1
+ import type { Framework } from '../../framework';
2
+ import { type ViteConfigOverrides } from '../vite';
3
+ export declare const defineFrameworkTestConfig: (framework: Framework, overrides?: ViteConfigOverrides) => import("vite").UserConfigExport;
4
+ //# sourceMappingURL=framework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vitest/framework.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGlD,eAAO,MAAM,yBAAyB,GACpC,WAAW,SAAS,EACpB,YAAW,mBAAwB,oCASlC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { defineTestConfig } from "./shared.js";
2
+ //#region src/lib/integrations/vitest/framework.ts
3
+ var defineFrameworkTestConfig = (framework, overrides = {}) => defineTestConfig(framework === "next" ? "next" : framework === "tanstack-docs" ? "docs" : "react", overrides);
4
+ //#endregion
5
+ export { defineFrameworkTestConfig };
@@ -0,0 +1,3 @@
1
+ import type { Plugin } from 'vite';
2
+ export declare const docsTestPlugins: () => (Plugin<any> | Plugin<any>[])[];
3
+ //# sourceMappingURL=docs-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-plugins.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/frameworks/docs-plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAsClC,eAAO,MAAM,eAAe,uCAI3B,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { docsMdx, docsMdxMacroImportAlias } from "../../../presets/docs/vite.js";
2
+ import path from "node:path";
3
+ //#region src/lib/integrations/vitest/frameworks/docs-plugins.ts
4
+ var slash = (value) => value.split(path.sep).join("/");
5
+ var projectRootImportAlias = () => {
6
+ return {
7
+ name: "@vezham/config:vitest-project-root-import-alias",
8
+ enforce: "pre",
9
+ resolveId(source) {
10
+ if (!source.startsWith("/openapi/")) return null;
11
+ const [filePath, query] = source.split("?", 2);
12
+ const resolvedPath = slash(path.resolve(process.cwd(), filePath.slice(1)));
13
+ return query ? `${resolvedPath}?${query}` : resolvedPath;
14
+ },
15
+ transform(code) {
16
+ if (!code.includes("/openapi/")) return null;
17
+ return code.replaceAll("\"/openapi/", `"${slash(path.resolve(process.cwd(), "openapi"))}/`).replaceAll("'/openapi/", `'${slash(path.resolve(process.cwd(), "openapi"))}/`);
18
+ }
19
+ };
20
+ };
21
+ var docsTestPlugins = () => [
22
+ projectRootImportAlias(),
23
+ docsMdxMacroImportAlias({ rewriteContentBase: true }),
24
+ docsMdx()
25
+ ];
26
+ //#endregion
27
+ export { docsTestPlugins };
@@ -0,0 +1,3 @@
1
+ import { type ViteConfigOverrides } from '../../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigExport;
3
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/frameworks/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,oCAC3B,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { defineTestConfig } from "../shared.js";
2
+ //#region src/lib/integrations/vitest/frameworks/docs.ts
3
+ var defineConfig = (overrides = {}) => defineTestConfig("docs", overrides);
4
+ //#endregion
5
+ export { defineConfig };
@@ -0,0 +1,3 @@
1
+ import { type ViteConfigOverrides } from '../../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigExport;
3
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/frameworks/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,oCAC3B,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { defineTestConfig } from "../shared.js";
2
+ //#region src/lib/integrations/vitest/frameworks/next.ts
3
+ var defineConfig = (overrides = {}) => defineTestConfig("next", overrides);
4
+ //#endregion
5
+ export { defineConfig };
@@ -0,0 +1,3 @@
1
+ import { type ViteConfigOverrides } from '../../vite';
2
+ export declare const defineConfig: (overrides?: ViteConfigOverrides) => import("vite").UserConfigExport;
3
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/frameworks/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,YAAY,GAAI,YAAW,mBAAwB,oCAC1B,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { defineTestConfig } from "../shared.js";
2
+ //#region src/lib/integrations/vitest/frameworks/react.ts
3
+ var defineConfig = (overrides = {}) => defineTestConfig("react", overrides);
4
+ //#endregion
5
+ export { defineConfig };
@@ -0,0 +1,4 @@
1
+ export { defineConfig } from '../vite';
2
+ export * from '../../framework';
3
+ export * from './framework';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vitest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { defineConfig } from "../vite/index.js";
2
+ import { validateFramework } from "../../framework.js";
3
+ import { defineFrameworkTestConfig } from "./framework.js";
4
+ export { defineConfig, defineFrameworkTestConfig, validateFramework };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/setup/next.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { vi } from "vitest";
2
+ //#region src/lib/integrations/vitest/setup/next.ts
3
+ vi.mock("next/navigation", () => ({ useRouter: () => ({
4
+ back: vi.fn(),
5
+ forward: vi.fn(),
6
+ prefetch: vi.fn(),
7
+ push: vi.fn(),
8
+ refresh: vi.fn(),
9
+ replace: vi.fn()
10
+ }) }));
11
+ //#endregion
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../../../src/lib/integrations/vitest/setup/react.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import * as matchers from "@testing-library/jest-dom/matchers";
2
+ import { cleanup } from "@testing-library/react";
3
+ import { afterEach, beforeEach, expect, vi } from "vitest";
4
+ //#region src/lib/integrations/vitest/setup/react.ts
5
+ var noop = () => void 0;
6
+ var ResizeObserverMock = class {
7
+ observe = noop;
8
+ unobserve = noop;
9
+ disconnect = noop;
10
+ };
11
+ expect.extend(matchers);
12
+ beforeEach(() => {
13
+ window.scrollTo = vi.fn();
14
+ Element.prototype.scrollTo = vi.fn();
15
+ });
16
+ if (typeof window !== "undefined" && typeof window.matchMedia !== "function") Object.defineProperty(window, "matchMedia", {
17
+ writable: true,
18
+ value: (query) => ({
19
+ matches: false,
20
+ media: query,
21
+ onchange: null,
22
+ addListener: noop,
23
+ removeListener: noop,
24
+ addEventListener: noop,
25
+ removeEventListener: noop,
26
+ dispatchEvent: () => false
27
+ })
28
+ });
29
+ if (typeof globalThis.ResizeObserver !== "function") Object.defineProperty(globalThis, "ResizeObserver", {
30
+ writable: true,
31
+ value: ResizeObserverMock
32
+ });
33
+ afterEach(() => {
34
+ cleanup();
35
+ });
36
+ //#endregion
@@ -0,0 +1,3 @@
1
+ import { type ViteConfigOverrides } from '../vite';
2
+ export declare const defineTestConfig: (feature: "react" | "next" | "docs", overrides?: ViteConfigOverrides) => import("vite").UserConfigExport;
3
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/lib/integrations/vitest/shared.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,gBAAgB,GAC3B,SAAS,OAAO,GAAG,MAAM,GAAG,MAAM,EAClC,YAAW,mBAAwB,oCA8BjC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { defineConfig as defineConfig$1 } from "../vite/index.js";
2
+ import path from "node:path";
3
+ import { mergeConfig } from "vite";
4
+ //#region src/lib/integrations/vitest/shared.ts
5
+ var defineTestConfig = (feature, overrides = {}) => defineConfig$1(async (env) => {
6
+ const config = typeof overrides === "function" ? await overrides(env) : overrides;
7
+ const setupFiles = [path.join(import.meta.dirname, "setup/react" + (import.meta.url.endsWith(".ts") ? ".ts" : ".js"))];
8
+ if (feature === "next") setupFiles.push(path.join(import.meta.dirname, "setup/next" + (import.meta.url.endsWith(".ts") ? ".ts" : ".js")));
9
+ const plugins = [];
10
+ if (feature === "docs") {
11
+ const { docsTestPlugins } = await import("./frameworks/docs-plugins.js");
12
+ plugins.push(...docsTestPlugins());
13
+ }
14
+ return mergeConfig({
15
+ plugins,
16
+ test: {
17
+ environment: "jsdom",
18
+ setupFiles,
19
+ fileParallelism: false
20
+ }
21
+ }, config);
22
+ });
23
+ //#endregion
24
+ export { defineTestConfig };
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import { generateMetadata, watchMetadata } from "./index.js";
3
+ //#region src/lib/metadata/cli.ts
4
+ var [, , command = "generate", projectRoot = process.cwd(), output] = process.argv;
5
+ if (command === "generate") {
6
+ const files = generateMetadata({ projectRoot });
7
+ console.log(output === "--json" ? JSON.stringify(files) : `Generated ${files.length} metadata files for ${projectRoot}`);
8
+ } else if (command === "watch") watchMetadata({ projectRoot });
9
+ else {
10
+ console.error(`Unknown public command "${command}". Use "generate" or "watch".`);
11
+ process.exitCode = 1;
12
+ }
13
+ //#endregion
@@ -0,0 +1,9 @@
1
+ import { type VxConfig } from './types';
2
+ export declare const getVxEnv: ({ core }: VxConfig) => {
3
+ HOST_NAME: string;
4
+ V_APP_ID: string;
5
+ V_APP_NAME: string;
6
+ V_APP_VER: string;
7
+ };
8
+ export declare const syncEnvContent: (content: string, values: Record<string, string>) => string;
9
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAavC,eAAO,MAAM,QAAQ,GAAI,UAAU,QAAQ;;;;;CAKzC,CAAA;AAEF,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EACf,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7B,MA+BF,CAAA"}
@@ -0,0 +1,36 @@
1
+ //#region src/lib/metadata/env.ts
2
+ var getDomain = (url) => {
3
+ try {
4
+ return new URL(url).hostname;
5
+ } catch {
6
+ return url.replace(/^https?:\/\//, "").replace(/\/.*$/, "");
7
+ }
8
+ };
9
+ var getLocalHostName = (url) => getDomain(url).replace(/\.vezham\.app$/, ".vezham.local");
10
+ var getVxEnv = ({ core }) => ({
11
+ HOST_NAME: getLocalHostName(core.url),
12
+ V_APP_ID: core.id,
13
+ V_APP_NAME: core.name,
14
+ V_APP_VER: core.version
15
+ });
16
+ var syncEnvContent = (content, values) => {
17
+ const lines = content ? content.replace(/\n$/, "").split("\n") : [];
18
+ const synced = /* @__PURE__ */ new Set();
19
+ const envLinePattern = /^([A-Z][A-Z0-9_]*)=/;
20
+ const nextLines = lines.map((line) => {
21
+ const key = line.match(envLinePattern)?.[1];
22
+ if (!key || !(key in values)) return line;
23
+ synced.add(key);
24
+ return `${key}=${values[key]}`;
25
+ });
26
+ const missingLines = Object.entries(values).filter(([key]) => !synced.has(key)).map(([key, value]) => `${key}=${value}`);
27
+ if (missingLines.length > 0) {
28
+ const prePortIndex = nextLines.findIndex((line) => line.startsWith("PRE_PORT="));
29
+ const portIndex = nextLines.findIndex((line) => line.startsWith("PORT="));
30
+ const insertIndex = prePortIndex >= 0 ? prePortIndex + 1 : portIndex >= 0 ? portIndex + 1 : 0;
31
+ nextLines.splice(insertIndex, 0, ...missingLines);
32
+ }
33
+ return `${nextLines.join("\n")}\n`;
34
+ };
35
+ //#endregion
36
+ export { getVxEnv, syncEnvContent };
@@ -0,0 +1,3 @@
1
+ import type { VxConfig } from './types';
2
+ export declare const syncIndexHtmlContent: (content: string, config: VxConfig, projectRoot?: string) => string;
3
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/html.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AA6JvC,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,QAAQ,QAAQ,EAChB,oBAA2B,WA2B5B,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { getTanStackHead } from "./tanstack.js";
2
+ import { escapeHtml, generatedNotice } from "./render.js";
3
+ //#region src/lib/metadata/html.ts
4
+ var indexMetadataStartMarker = "<!-- VX_METADATA_START -->";
5
+ var indexMetadataEndMarker = "<!-- VX_METADATA_END -->";
6
+ var isDefined = (value) => value !== void 0;
7
+ var normalizeHtmlAttributeName = (name) => name === "charSet" ? "charset" : name;
8
+ var renderHtmlAttribute = ([name, value]) => {
9
+ if (value === void 0) return;
10
+ if (value === true) return name;
11
+ if (value === false) return;
12
+ return `${normalizeHtmlAttributeName(name)}="${escapeHtml(value)}"`;
13
+ };
14
+ var renderHtmlTag = (tag, attributes, indent = " ") => {
15
+ const renderedAttributes = Object.entries(attributes).map(renderHtmlAttribute).filter(isDefined);
16
+ const inlineTag = `${indent}<${tag} ${renderedAttributes.join(" ")} />`;
17
+ if (inlineTag.length <= 80) return inlineTag;
18
+ return `${indent}<${tag}\n${renderedAttributes.map((attribute) => `${indent} ${attribute}`).join("\n")} />`;
19
+ };
20
+ var escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
21
+ var getIndexHtmlMetadataBlock = (config, projectRoot = process.cwd()) => {
22
+ const head = getTanStackHead(config, projectRoot);
23
+ const [charsetMeta, ...meta] = head.meta;
24
+ const renderHeadMetaEntry = (entry) => {
25
+ if (typeof entry.title === "string") return ` <title>${escapeHtml(entry.title)}</title>`;
26
+ return renderHtmlTag("meta", entry);
27
+ };
28
+ const note = (label) => ` <!-- wjdlz/NOTE: ${label} -->`;
29
+ const isMetaName = (entry, names) => typeof entry.name === "string" && names.includes(entry.name);
30
+ const webMeta = meta.filter((entry) => entry.title || isMetaName(entry, [
31
+ "viewport",
32
+ "author",
33
+ "keywords",
34
+ "description"
35
+ ]));
36
+ const themeMeta = meta.filter((entry) => isMetaName(entry, ["theme-color", "background-color"]));
37
+ const mobileMeta = meta.filter((entry) => isMetaName(entry, ["mobile-web-app-capable"]));
38
+ const appleMeta = meta.filter((entry) => typeof entry.name === "string" && entry.name.startsWith("apple-"));
39
+ const microsoftMeta = meta.filter((entry) => isMetaName(entry, [
40
+ "application-name",
41
+ "msapplication-config",
42
+ "msapplication-starturl"
43
+ ]));
44
+ const openGraphMeta = meta.filter((entry) => typeof entry.property === "string" && entry.property.startsWith("og:"));
45
+ const twitterMeta = meta.filter((entry) => typeof entry.name === "string" && entry.name.startsWith("twitter:"));
46
+ const pwaLinks = head.links.filter((link) => link.rel === "manifest" || link.rel === "icon" || link.rel === "shortcut icon" || link.rel === "mask-icon");
47
+ const appleLinks = head.links.filter((link) => typeof link.rel === "string" && link.rel.startsWith("apple-touch-"));
48
+ return [
49
+ ` ${indexMetadataStartMarker}`,
50
+ ` <!-- ${generatedNotice} -->`,
51
+ note("WEB"),
52
+ ...charsetMeta ? [renderHeadMetaEntry(charsetMeta)] : [],
53
+ renderHtmlTag("meta", {
54
+ "http-equiv": "X-UA-Compatible",
55
+ content: "IE=edge"
56
+ }),
57
+ ...webMeta.map(renderHeadMetaEntry),
58
+ "",
59
+ note("PWA::THEME"),
60
+ ...themeMeta.map(renderHeadMetaEntry),
61
+ ...pwaLinks.map((link) => renderHtmlTag("link", link)),
62
+ "",
63
+ note("PWA::MOBILE"),
64
+ ...mobileMeta.map(renderHeadMetaEntry),
65
+ "",
66
+ note("APPLE"),
67
+ ...appleMeta.map(renderHeadMetaEntry),
68
+ ...appleLinks.map((link) => renderHtmlTag("link", link)),
69
+ "",
70
+ note("MICROSOFT"),
71
+ ...microsoftMeta.map(renderHeadMetaEntry),
72
+ "",
73
+ note("META"),
74
+ ...openGraphMeta.map(renderHeadMetaEntry),
75
+ "",
76
+ note("TWITTER"),
77
+ ...twitterMeta.map(renderHeadMetaEntry),
78
+ ` ${indexMetadataEndMarker}`
79
+ ].join("\n");
80
+ };
81
+ var getPreservedIndexHeadContent = (headContent) => headContent.split("\n").filter((line) => {
82
+ const trimmedLine = line.trim();
83
+ return trimmedLine.startsWith("<base ") || trimmedLine.startsWith("<script ");
84
+ }).join("\n");
85
+ var syncIndexHtmlContent = (content, config, projectRoot = process.cwd()) => {
86
+ const metadataBlock = getIndexHtmlMetadataBlock(config, projectRoot);
87
+ const headPattern = /(<head>\n)([\s\S]*?)(\n\s*<\/head>)/;
88
+ const headMatch = content.match(headPattern);
89
+ if (!headMatch) throw new Error("Unable to sync Vx metadata because index.html has no head");
90
+ const [, headStart, headContent, headEnd] = headMatch;
91
+ const existingBlockPattern = new RegExp(`${escapeRegex(` ${indexMetadataStartMarker}`)}[\\s\\S]*?${escapeRegex(` ${indexMetadataEndMarker}`)}`);
92
+ const nextHeadContent = [getPreservedIndexHeadContent(headContent.replace(existingBlockPattern, "")), metadataBlock].filter(Boolean).join("\n\n");
93
+ return content.replace(headPattern, `${headStart}${nextHeadContent}${headEnd}`);
94
+ };
95
+ //#endregion
96
+ export { syncIndexHtmlContent };
@@ -0,0 +1,7 @@
1
+ import { type GenerateMetadataOptions, type MetadataFile, type VxConfig } from './types';
2
+ export declare const loadVxAppConfig: (projectRoot?: string) => VxConfig;
3
+ export declare const getMetadataFiles: (config: VxConfig, projectRoot?: string) => MetadataFile[];
4
+ export declare const generateMetadata: (options?: GenerateMetadataOptions) => string[];
5
+ export declare const watchMetadata: (options?: GenerateMetadataOptions) => import("node:fs").FSWatcher;
6
+ export type { GenerateMetadataOptions } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/metadata/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,SAAS,CAAA;AAOhB,eAAO,MAAM,eAAe,GAAI,oBAA2B,aAU1D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,QAAQ,EAChB,oBAA2B,KAC1B,YAAY,EA+Bd,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAS,uBAA4B,aASrE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,UAAS,uBAA4B,gCAclE,CAAA;AAGD,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { validateFramework } from "../framework.js";
2
+ import { readYamlConfig } from "../yaml-config.js";
3
+ import { getNavigationFiles } from "../navigation/index.js";
4
+ import { getVxEnv, syncEnvContent } from "./env.js";
5
+ import { getGeneratedMetadataModule } from "./render.js";
6
+ import { syncIndexHtmlContent } from "./html.js";
7
+ import { getPublicMetadataFiles } from "./public.js";
8
+ import { existsSync, mkdirSync, readFileSync, watch, writeFileSync } from "node:fs";
9
+ import path from "node:path";
10
+ //#region src/lib/metadata/index.ts
11
+ var writeMetadataFile = ({ path: file, content }) => {
12
+ mkdirSync(path.dirname(file), { recursive: true });
13
+ writeFileSync(file, content);
14
+ };
15
+ var loadVxAppConfig = (projectRoot = process.cwd()) => {
16
+ const configFile = path.resolve(projectRoot, "vx.app.yaml");
17
+ if (!existsSync(configFile)) throw new Error(`Missing vx.app.yaml at ${configFile}`);
18
+ const config = readYamlConfig(configFile);
19
+ validateFramework(config.framework);
20
+ return config;
21
+ };
22
+ var getMetadataFiles = (config, projectRoot = process.cwd()) => {
23
+ const indexFile = path.resolve(projectRoot, "index.html");
24
+ const envFile = path.resolve(projectRoot, ".env");
25
+ return [
26
+ ...getNavigationFiles(projectRoot),
27
+ ...getPublicMetadataFiles(config, projectRoot),
28
+ ...existsSync(indexFile) ? [{
29
+ path: indexFile,
30
+ content: syncIndexHtmlContent(readFileSync(indexFile, "utf8"), config, projectRoot)
31
+ }] : [],
32
+ {
33
+ path: path.join(projectRoot, "src/generated/vx.ts"),
34
+ content: getGeneratedMetadataModule(config, projectRoot)
35
+ },
36
+ {
37
+ path: envFile,
38
+ content: syncEnvContent(existsSync(envFile) ? readFileSync(envFile, "utf8") : "", getVxEnv(config))
39
+ }
40
+ ];
41
+ };
42
+ var generateMetadata = (options = {}) => {
43
+ const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
44
+ const files = getMetadataFiles(loadVxAppConfig(projectRoot), projectRoot);
45
+ for (const file of files) writeMetadataFile(file);
46
+ return files.map((file) => file.path);
47
+ };
48
+ var watchMetadata = (options = {}) => {
49
+ const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
50
+ const configFile = path.join(projectRoot, "vx.app.yaml");
51
+ const regenerate = () => {
52
+ const files = generateMetadata(options);
53
+ console.log(`Generated ${files.length} metadata files from ${configFile}`);
54
+ };
55
+ regenerate();
56
+ return watch(projectRoot, { persistent: true }, (_event, filename) => {
57
+ if (filename === "vx.app.yaml" || filename === "vx.nav.yaml") regenerate();
58
+ });
59
+ };
60
+ //#endregion
61
+ export { generateMetadata, getMetadataFiles, loadVxAppConfig, watchMetadata };