@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.
- package/README.md +14 -0
- package/dist/lib/deploy/cli.d.ts +3 -0
- package/dist/lib/deploy/cli.d.ts.map +1 -0
- package/dist/lib/deploy/cli.js +12 -0
- package/dist/lib/deploy/firebase.d.ts +3 -0
- package/dist/lib/deploy/firebase.d.ts.map +1 -0
- package/dist/lib/deploy/firebase.js +106 -0
- package/dist/lib/deploy/index.d.ts +4 -0
- package/dist/lib/deploy/index.d.ts.map +1 -0
- package/dist/lib/deploy/index.js +42 -0
- package/dist/lib/deploy/paths.d.ts +3 -0
- package/dist/lib/deploy/paths.d.ts.map +1 -0
- package/dist/lib/deploy/paths.js +6 -0
- package/dist/lib/deploy/presets.d.ts +5 -0
- package/dist/lib/deploy/presets.d.ts.map +1 -0
- package/dist/lib/deploy/presets.js +10 -0
- package/dist/lib/deploy/types.d.ts +97 -0
- package/dist/lib/deploy/types.d.ts.map +1 -0
- package/dist/lib/deploy/vercel.d.ts +3 -0
- package/dist/lib/deploy/vercel.d.ts.map +1 -0
- package/dist/lib/deploy/vercel.js +47 -0
- package/dist/lib/framework.d.ts +3 -0
- package/dist/lib/framework.d.ts.map +1 -0
- package/dist/lib/framework.js +7 -0
- package/dist/lib/i18n.d.ts +6 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +11 -0
- package/dist/lib/integrations/next/index.d.ts +4 -0
- package/dist/lib/integrations/next/index.d.ts.map +1 -0
- package/dist/lib/integrations/next/index.js +29 -0
- package/dist/lib/integrations/playwright/index.d.ts +11 -0
- package/dist/lib/integrations/playwright/index.d.ts.map +1 -0
- package/dist/lib/integrations/playwright/index.js +77 -0
- package/dist/lib/integrations/playwright/test.d.ts +5 -0
- package/dist/lib/integrations/playwright/test.d.ts.map +1 -0
- package/dist/lib/integrations/playwright/test.js +23 -0
- package/dist/lib/integrations/vite/index.d.ts +12 -0
- package/dist/lib/integrations/vite/index.d.ts.map +1 -0
- package/dist/lib/integrations/vite/index.js +34 -0
- package/dist/lib/integrations/vite-lib/base.d.ts +3 -0
- package/dist/lib/integrations/vite-lib/base.d.ts.map +1 -0
- package/dist/lib/integrations/vite-lib/base.js +31 -0
- package/dist/lib/integrations/vite-lib/index.d.ts +3 -0
- package/dist/lib/integrations/vite-lib/index.d.ts.map +1 -0
- package/dist/lib/integrations/vite-lib/index.js +42 -0
- package/dist/lib/integrations/vite-lib/react.d.ts +3 -0
- package/dist/lib/integrations/vite-lib/react.d.ts.map +1 -0
- package/dist/lib/integrations/vite-lib/react.js +10 -0
- package/dist/lib/integrations/vitest/framework.d.ts +4 -0
- package/dist/lib/integrations/vitest/framework.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/framework.js +5 -0
- package/dist/lib/integrations/vitest/frameworks/docs-plugins.d.ts +3 -0
- package/dist/lib/integrations/vitest/frameworks/docs-plugins.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/frameworks/docs-plugins.js +27 -0
- package/dist/lib/integrations/vitest/frameworks/docs.d.ts +3 -0
- package/dist/lib/integrations/vitest/frameworks/docs.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/frameworks/docs.js +5 -0
- package/dist/lib/integrations/vitest/frameworks/next.d.ts +3 -0
- package/dist/lib/integrations/vitest/frameworks/next.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/frameworks/next.js +5 -0
- package/dist/lib/integrations/vitest/frameworks/react.d.ts +3 -0
- package/dist/lib/integrations/vitest/frameworks/react.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/frameworks/react.js +5 -0
- package/dist/lib/integrations/vitest/index.d.ts +4 -0
- package/dist/lib/integrations/vitest/index.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/index.js +4 -0
- package/dist/lib/integrations/vitest/setup/next.d.ts +2 -0
- package/dist/lib/integrations/vitest/setup/next.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/setup/next.js +11 -0
- package/dist/lib/integrations/vitest/setup/react.d.ts +2 -0
- package/dist/lib/integrations/vitest/setup/react.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/setup/react.js +36 -0
- package/dist/lib/integrations/vitest/shared.d.ts +3 -0
- package/dist/lib/integrations/vitest/shared.d.ts.map +1 -0
- package/dist/lib/integrations/vitest/shared.js +24 -0
- package/dist/lib/metadata/cli.d.ts +3 -0
- package/dist/lib/metadata/cli.d.ts.map +1 -0
- package/dist/lib/metadata/cli.js +13 -0
- package/dist/lib/metadata/env.d.ts +9 -0
- package/dist/lib/metadata/env.d.ts.map +1 -0
- package/dist/lib/metadata/env.js +36 -0
- package/dist/lib/metadata/html.d.ts +3 -0
- package/dist/lib/metadata/html.d.ts.map +1 -0
- package/dist/lib/metadata/html.js +96 -0
- package/dist/lib/metadata/index.d.ts +7 -0
- package/dist/lib/metadata/index.d.ts.map +1 -0
- package/dist/lib/metadata/index.js +61 -0
- package/dist/lib/metadata/next.d.ts +79 -0
- package/dist/lib/metadata/next.d.ts.map +1 -0
- package/dist/lib/metadata/next.js +106 -0
- package/dist/lib/metadata/public.d.ts +3 -0
- package/dist/lib/metadata/public.d.ts.map +1 -0
- package/dist/lib/metadata/public.js +107 -0
- package/dist/lib/metadata/render.d.ts +7 -0
- package/dist/lib/metadata/render.d.ts.map +1 -0
- package/dist/lib/metadata/render.js +37 -0
- package/dist/lib/metadata/runtime.d.ts +68 -0
- package/dist/lib/metadata/runtime.d.ts.map +1 -0
- package/dist/lib/metadata/runtime.js +134 -0
- package/dist/lib/metadata/tanstack.d.ts +71 -0
- package/dist/lib/metadata/tanstack.d.ts.map +1 -0
- package/dist/lib/metadata/tanstack.js +194 -0
- package/dist/lib/metadata/templates/not-found.html +224 -0
- package/dist/lib/metadata/templates/offline.html +210 -0
- package/dist/lib/metadata/types.d.ts +118 -0
- package/dist/lib/metadata/types.d.ts.map +1 -0
- package/dist/lib/navigation/app-menu.d.ts +2 -0
- package/dist/lib/navigation/app-menu.d.ts.map +1 -0
- package/dist/lib/navigation/app-menu.js +45 -0
- package/dist/lib/navigation/control-center.d.ts +2 -0
- package/dist/lib/navigation/control-center.d.ts.map +1 -0
- package/dist/lib/navigation/control-center.js +66 -0
- package/dist/lib/navigation/index.d.ts +5 -0
- package/dist/lib/navigation/index.d.ts.map +1 -0
- package/dist/lib/navigation/index.js +59 -0
- package/dist/lib/navigation/toolbar.d.ts +2 -0
- package/dist/lib/navigation/toolbar.d.ts.map +1 -0
- package/dist/lib/navigation/toolbar.js +78 -0
- package/dist/lib/presets/app/index.d.ts +21 -0
- package/dist/lib/presets/app/index.d.ts.map +1 -0
- package/dist/lib/presets/app/index.js +114 -0
- package/dist/lib/presets/cdn/index.d.ts +2 -0
- package/dist/lib/presets/cdn/index.d.ts.map +1 -0
- package/dist/lib/presets/cdn/index.js +2 -0
- package/dist/lib/presets/docs/cli.d.ts +3 -0
- package/dist/lib/presets/docs/cli.d.ts.map +1 -0
- package/dist/lib/presets/docs/cli.js +18 -0
- package/dist/lib/presets/docs/config.d.ts +40 -0
- package/dist/lib/presets/docs/config.d.ts.map +1 -0
- package/dist/lib/presets/docs/config.js +39 -0
- package/dist/lib/presets/docs/files.d.ts +2 -0
- package/dist/lib/presets/docs/files.d.ts.map +1 -0
- package/dist/lib/presets/docs/files.js +13 -0
- package/dist/lib/presets/docs/index.d.ts +7 -0
- package/dist/lib/presets/docs/index.d.ts.map +1 -0
- package/dist/lib/presets/docs/index.js +6 -0
- package/dist/lib/presets/docs/mdx-path.d.ts +7 -0
- package/dist/lib/presets/docs/mdx-path.d.ts.map +1 -0
- package/dist/lib/presets/docs/mdx-path.js +19 -0
- package/dist/lib/presets/docs/og-image.d.ts +9 -0
- package/dist/lib/presets/docs/og-image.d.ts.map +1 -0
- package/dist/lib/presets/docs/og-image.js +88 -0
- package/dist/lib/presets/docs/og-output.d.ts +5 -0
- package/dist/lib/presets/docs/og-output.d.ts.map +1 -0
- package/dist/lib/presets/docs/og-output.js +34 -0
- package/dist/lib/presets/docs/og.d.ts +9 -0
- package/dist/lib/presets/docs/og.d.ts.map +1 -0
- package/dist/lib/presets/docs/og.js +112 -0
- package/dist/lib/presets/docs/openapi.d.ts +3 -0
- package/dist/lib/presets/docs/openapi.d.ts.map +1 -0
- package/dist/lib/presets/docs/openapi.js +105 -0
- package/dist/lib/presets/docs/routes.d.ts +7 -0
- package/dist/lib/presets/docs/routes.d.ts.map +1 -0
- package/dist/lib/presets/docs/routes.js +109 -0
- package/dist/lib/presets/docs/types.d.ts +31 -0
- package/dist/lib/presets/docs/types.d.ts.map +1 -0
- package/dist/lib/presets/docs/vite.d.ts +11 -0
- package/dist/lib/presets/docs/vite.d.ts.map +1 -0
- package/dist/lib/presets/docs/vite.js +78 -0
- package/dist/lib/presets/files.d.ts +5 -0
- package/dist/lib/presets/files.d.ts.map +1 -0
- package/dist/lib/presets/files.js +21 -0
- package/dist/lib/presets/route-files.d.ts +22 -0
- package/dist/lib/presets/route-files.d.ts.map +1 -0
- package/dist/lib/presets/route-files.js +49 -0
- package/dist/lib/yaml-config.d.ts +2 -0
- package/dist/lib/yaml-config.d.ts.map +1 -0
- package/dist/lib/yaml-config.js +6 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 };
|