zudoku 0.1.1-dev.7 → 0.1.1-dev.8
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/dist/app/App.js +8 -38
- package/dist/app/App.js.map +1 -1
- package/dist/cli/common/logger.js +8 -0
- package/dist/cli/common/logger.js.map +1 -1
- package/dist/config/config.d.ts +11 -5
- package/dist/ts.d.ts +6 -0
- package/dist/ts.js +62 -0
- package/dist/ts.js.map +1 -0
- package/dist/vite/config.d.ts +1 -1
- package/dist/vite/config.js +38 -44
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.js +4 -3
- package/dist/vite/config.test.js.map +1 -1
- package/dist/vite/dev-server.js +3 -2
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/html.d.ts +1 -1
- package/dist/vite/html.js +2 -3
- package/dist/vite/html.js.map +1 -1
- package/dist/vite/plugin-api.d.ts +4 -0
- package/dist/vite/plugin-api.js +47 -0
- package/dist/vite/plugin-api.js.map +1 -0
- package/dist/vite/plugin-auth.d.ts +4 -0
- package/dist/vite/plugin-auth.js +29 -0
- package/dist/vite/plugin-auth.js.map +1 -0
- package/dist/vite/plugin-config.d.ts +6 -0
- package/dist/vite/plugin-config.js +24 -0
- package/dist/vite/plugin-config.js.map +1 -0
- package/dist/vite/plugin-docs.d.ts +4 -0
- package/dist/vite/plugin-docs.js +43 -0
- package/dist/vite/plugin-docs.js.map +1 -0
- package/dist/vite/plugin-docs.test.d.ts +1 -0
- package/dist/vite/plugin-docs.test.js +31 -0
- package/dist/vite/plugin-docs.test.js.map +1 -0
- package/dist/vite/plugin-html.d.ts +3 -0
- package/dist/vite/plugin-html.js +50 -0
- package/dist/vite/plugin-html.js.map +1 -0
- package/dist/vite/plugin-mdx.d.ts +8 -0
- package/dist/vite/plugin-mdx.js +61 -0
- package/dist/vite/plugin-mdx.js.map +1 -0
- package/dist/vite/plugin.d.ts +2 -6
- package/dist/vite/plugin.js +14 -104
- package/dist/vite/plugin.js.map +1 -1
- package/package.json +2 -1
- package/src/app/App.tsx +11 -44
- package/dist/app/config.d.ts +0 -3
- package/dist/app/config.js +0 -9
- package/dist/app/config.js.map +0 -1
- package/dist/app/markdowns.d.ts +0 -3
- package/dist/app/markdowns.js +0 -5
- package/dist/app/markdowns.js.map +0 -1
- package/src/app/config.ts +0 -20
- package/src/app/markdowns.ts +0 -7
package/dist/app/App.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import "./main.css";
|
|
3
|
+
// Virtual config
|
|
4
|
+
import config from "virtual:zudoku-config";
|
|
5
|
+
// Virtual Plugins
|
|
6
|
+
import { configuredApiPlugins } from "virtual:zudoku-api-plugins";
|
|
7
|
+
import { configuredAuthProvider } from "virtual:zudoku-auth";
|
|
8
|
+
import { configuredDocsPlugins } from "virtual:zudoku-docs-plugins";
|
|
9
|
+
// Base React Component
|
|
3
10
|
import DevPortal from "./DevPortal.js";
|
|
4
|
-
import { markdownPlugin } from "./plugins/markdown/index.js";
|
|
5
|
-
import { openApiPlugin } from "./plugins/openapi/index.js";
|
|
6
|
-
import config from "./config.js";
|
|
7
|
-
// import markdowns from "./markdowns.js";
|
|
8
11
|
export default function App() {
|
|
9
12
|
return (_jsx(DevPortal, { meta: {
|
|
10
13
|
headerTitle: config?.ui?.headerTitle ?? "Developer Portal",
|
|
@@ -12,39 +15,6 @@ export default function App() {
|
|
|
12
15
|
logo: config?.ui?.logo ?? "https://cdn.zuplo.com/www/favicon.png",
|
|
13
16
|
favicon: config?.ui?.metadata?.favicon ??
|
|
14
17
|
"https://cdn.zuplo.com/www/favicon.png",
|
|
15
|
-
}, navigation: config.navigation ?? [],
|
|
16
|
-
// authentication={
|
|
17
|
-
// config.authentication
|
|
18
|
-
// ? getAuthProvider(config.authentication)
|
|
19
|
-
// : undefined
|
|
20
|
-
// }
|
|
21
|
-
plugins: [
|
|
22
|
-
...(config.docs
|
|
23
|
-
? Array.isArray(config.docs)
|
|
24
|
-
? config.docs
|
|
25
|
-
: [config.docs]
|
|
26
|
-
: []).map((docs) => markdownPlugin({
|
|
27
|
-
markdownFiles: docs?.files ?? {},
|
|
28
|
-
})),
|
|
29
|
-
...(config.apis
|
|
30
|
-
? Array.isArray(config.apis)
|
|
31
|
-
? config.apis
|
|
32
|
-
: [config.apis]
|
|
33
|
-
: []).map((api) => openApiPlugin(api)),
|
|
34
|
-
// if (!accessToken) {
|
|
35
|
-
// return;
|
|
36
|
-
// }
|
|
37
|
-
// const consumers = await fetch(
|
|
38
|
-
// "https://zudoku-customer-main-b36fa2f.d2.zuplo.dev/v1/developer/api-keys",
|
|
39
|
-
// {
|
|
40
|
-
// headers: {
|
|
41
|
-
// Authorization: `Bearer ${accessToken}`,
|
|
42
|
-
// },
|
|
43
|
-
// },
|
|
44
|
-
// );
|
|
45
|
-
// return { consumers: [await consumers.json()] };
|
|
46
|
-
// },
|
|
47
|
-
// }),
|
|
48
|
-
] }));
|
|
18
|
+
}, navigation: config.navigation ?? [], authentication: configuredAuthProvider, plugins: [...configuredDocsPlugins, ...configuredApiPlugins] }));
|
|
49
19
|
}
|
|
50
20
|
//# sourceMappingURL=App.js.map
|
package/dist/app/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/app/App.tsx"],"names":[],"mappings":";AAAA,OAAO,YAAY,CAAC;AAEpB,OAAO,
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/app/App.tsx"],"names":[],"mappings":";AAAA,OAAO,YAAY,CAAC;AAEpB,iBAAiB;AACjB,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,kBAAkB;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,uBAAuB;AACvB,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,GAAG;IACzB,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,IAAI,kBAAkB;YAC1D,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,IAAI,iBAAiB;YACrD,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,uCAAuC;YACjE,OAAO,EACL,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO;gBAC7B,uCAAuC;SAC1C,EACD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,EACnC,cAAc,EAAE,sBAAsB,EACtC,OAAO,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,oBAAoB,CAAC,GAC5D,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import * as Pino from "pino";
|
|
2
2
|
export const logger = Pino.pino({
|
|
3
3
|
level: process.env.LOG_LEVEL || "info",
|
|
4
|
+
transport: process.env.LOG_FORMAT === "pretty"
|
|
5
|
+
? {
|
|
6
|
+
target: "pino-pretty",
|
|
7
|
+
options: {
|
|
8
|
+
colorize: true,
|
|
9
|
+
},
|
|
10
|
+
}
|
|
11
|
+
: undefined,
|
|
4
12
|
});
|
|
5
13
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/common/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/common/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACtC,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,QAAQ;QACjC,CAAC,CAAC;YACE,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;aACf;SACF;QACH,CAAC,CAAC,SAAS;CAChB,CAAC,CAAC"}
|
package/dist/config/config.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Options } from "@mdx-js/rollup";
|
|
2
2
|
import { NavigationItem } from "../app/core/DevPortalContext.js";
|
|
3
|
-
import { MarkdownPluginOptions } from "../app/plugins/markdown/index.js";
|
|
4
3
|
import { OasPluginConfig } from "../app/plugins/openapi/index.js";
|
|
5
|
-
import {
|
|
4
|
+
import { type MdxComponentsType } from "../app/util/MdxComponents.js";
|
|
6
5
|
export interface ZudokuConfig {
|
|
7
6
|
ui?: UIConfig;
|
|
8
7
|
mdx?: {
|
|
@@ -12,7 +11,14 @@ export interface ZudokuConfig {
|
|
|
12
11
|
navigation?: NavigationItem[];
|
|
13
12
|
docs?: DocsConfig;
|
|
14
13
|
apis?: ApiConfig | ApiConfig[];
|
|
15
|
-
build?:
|
|
14
|
+
build?: {
|
|
15
|
+
remarkPlugins?: Options["remarkPlugins"];
|
|
16
|
+
rehypePlugins?: Options["rehypePlugins"];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface ZudokuPluginOptions extends ZudokuConfig {
|
|
20
|
+
rootDir: string;
|
|
21
|
+
appDir: string;
|
|
16
22
|
}
|
|
17
23
|
export interface UIConfig {
|
|
18
24
|
/**
|
|
@@ -27,7 +33,7 @@ export interface MetadataConfig {
|
|
|
27
33
|
favicon?: string;
|
|
28
34
|
}
|
|
29
35
|
export interface DocsConfig {
|
|
30
|
-
files?:
|
|
36
|
+
files?: string;
|
|
31
37
|
}
|
|
32
38
|
export type ApiConfig = OasPluginConfig;
|
|
33
39
|
export interface ClerkAuthenticationConfig {
|
package/dist/ts.d.ts
ADDED
package/dist/ts.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
/**
|
|
4
|
+
* Function to check if a TypeScript string is valid
|
|
5
|
+
* Used for tests
|
|
6
|
+
*/
|
|
7
|
+
export async function checkTypescriptString(code) {
|
|
8
|
+
const rootDir = process.cwd();
|
|
9
|
+
const inMemoryFileName = path.join(rootDir, "/src/temp.ts");
|
|
10
|
+
const configPath = ts.findConfigFile(rootDir, ts.sys.fileExists, "tsconfig.json");
|
|
11
|
+
if (!configPath) {
|
|
12
|
+
throw new Error("Could not find a valid tsconfig.json");
|
|
13
|
+
}
|
|
14
|
+
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
15
|
+
const parsedCommandLine = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(configPath));
|
|
16
|
+
// Custom compiler host to handle in-memory file and delegate to default host for others
|
|
17
|
+
const compilerHost = {
|
|
18
|
+
...ts.createCompilerHost(parsedCommandLine.options),
|
|
19
|
+
getSourceFile: (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
|
|
20
|
+
if (fileName === inMemoryFileName) {
|
|
21
|
+
return ts.createSourceFile(fileName, code, languageVersion, true);
|
|
22
|
+
}
|
|
23
|
+
return ts
|
|
24
|
+
.createCompilerHost(parsedCommandLine.options)
|
|
25
|
+
.getSourceFile(fileName, languageVersion, onError, shouldCreateNewSourceFile);
|
|
26
|
+
},
|
|
27
|
+
fileExists: (fileName) => {
|
|
28
|
+
if (fileName === inMemoryFileName) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return ts.sys.fileExists(fileName);
|
|
32
|
+
},
|
|
33
|
+
readFile: (fileName) => {
|
|
34
|
+
if (fileName === inMemoryFileName) {
|
|
35
|
+
return code;
|
|
36
|
+
}
|
|
37
|
+
return ts.sys.readFile(fileName);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// Create a source file in memory
|
|
41
|
+
const sourceFile = ts.createSourceFile("tempFile.ts", code, 99, true);
|
|
42
|
+
// Create a program using the in-memory source file
|
|
43
|
+
const program = ts.createProgram({
|
|
44
|
+
rootNames: parsedCommandLine.fileNames.concat(inMemoryFileName),
|
|
45
|
+
options: parsedCommandLine.options,
|
|
46
|
+
host: compilerHost,
|
|
47
|
+
});
|
|
48
|
+
// Get all diagnostics for the program, which includes syntax and semantic errors
|
|
49
|
+
const diagnostics = ts.getPreEmitDiagnostics(program);
|
|
50
|
+
diagnostics.forEach((diagnostic) => {
|
|
51
|
+
if (diagnostic.file) {
|
|
52
|
+
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
53
|
+
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
54
|
+
console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return diagnostics;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ts.js.map
|
package/dist/ts.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts.js","sourceRoot":"","sources":["../src/ts.ts"],"names":[],"mappings":"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"}
|
package/dist/vite/config.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export declare function loadZuploConfig(rootDir: string): Promise<ZudokuConfig>;
|
|
|
4
4
|
export declare function getAppDir(): string;
|
|
5
5
|
export declare function getAppMainTsxPath(): string;
|
|
6
6
|
export declare function getViteConfig(dir: string): Promise<InlineConfig>;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function loadConfig(rootPath: string, fileName: string): Promise<any>;
|
package/dist/vite/config.js
CHANGED
|
@@ -1,34 +1,32 @@
|
|
|
1
1
|
import autoprefixer from "autoprefixer";
|
|
2
2
|
import esbuild from "esbuild";
|
|
3
|
-
import {
|
|
3
|
+
import { stat } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import tailwindcss from "tailwindcss";
|
|
6
6
|
import tailwindConfig from "../app/tailwind.js";
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import { logger } from "../cli/common/logger.js";
|
|
8
|
+
import vitePlugin from "./plugin.js";
|
|
9
|
+
const extensions = ["js", "jsx", "ts", "tsx", "mjs"];
|
|
9
10
|
const fileExists = (path) => stat(path)
|
|
10
11
|
.then(() => true)
|
|
11
12
|
.catch(() => false);
|
|
12
13
|
export async function loadZuploConfig(rootDir) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
continue;
|
|
14
|
+
for (const ext of extensions) {
|
|
15
|
+
const fileName = `zudoku.config.${ext}`;
|
|
16
|
+
const configPath = path.join(rootDir, fileName);
|
|
17
17
|
try {
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const config = await import(configPath);
|
|
18
|
+
if (await fileExists(configPath)) {
|
|
19
|
+
logger.debug(`Loading zudoku.config file: ${configPath}`);
|
|
20
|
+
const config = await loadConfig(rootDir, fileName);
|
|
24
21
|
return config.default;
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
24
|
catch (e) {
|
|
28
|
-
|
|
25
|
+
logger.debug(e);
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
// Default config
|
|
29
|
+
logger.debug("No zudoku.config file found");
|
|
32
30
|
return {};
|
|
33
31
|
}
|
|
34
32
|
export function getAppDir() {
|
|
@@ -41,9 +39,9 @@ export function getAppMainTsxPath() {
|
|
|
41
39
|
return path.join(appDir, "main.tsx");
|
|
42
40
|
}
|
|
43
41
|
export async function getViteConfig(dir) {
|
|
44
|
-
const appDir = getAppDir();
|
|
45
42
|
const rootDir = path.resolve(process.cwd(), dir);
|
|
46
|
-
const
|
|
43
|
+
const appDir = getAppDir();
|
|
44
|
+
const config = await loadZuploConfig(rootDir);
|
|
47
45
|
const viteConfig = {
|
|
48
46
|
root: rootDir,
|
|
49
47
|
configFile: false,
|
|
@@ -61,11 +59,11 @@ export async function getViteConfig(dir) {
|
|
|
61
59
|
],
|
|
62
60
|
},
|
|
63
61
|
},
|
|
62
|
+
build: {
|
|
63
|
+
outDir: path.resolve(rootDir, "out"),
|
|
64
|
+
},
|
|
64
65
|
appType: "custom",
|
|
65
|
-
plugins: [
|
|
66
|
-
devPortalPlugin(zudokuConfig.build),
|
|
67
|
-
// importMarkdownPlugins(zudokuConfig),
|
|
68
|
-
],
|
|
66
|
+
plugins: [vitePlugin({ ...config, rootDir, appDir })],
|
|
69
67
|
css: {
|
|
70
68
|
postcss: {
|
|
71
69
|
plugins: [
|
|
@@ -83,32 +81,28 @@ export async function getViteConfig(dir) {
|
|
|
83
81
|
};
|
|
84
82
|
return viteConfig;
|
|
85
83
|
}
|
|
86
|
-
export async function
|
|
87
|
-
const compiledFilepath = path.
|
|
84
|
+
export async function loadConfig(rootPath, fileName) {
|
|
85
|
+
const compiledFilepath = path.join(rootPath, "node_modules", ".zudoku", "zudoku.config.mjs");
|
|
86
|
+
const filepath = path.join(rootPath, fileName);
|
|
88
87
|
try {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
error.message = `TypeScript Error in ${filepath}:\n${error.message}`;
|
|
106
|
-
throw error;
|
|
107
|
-
}
|
|
108
|
-
return await import(compiledFilepath);
|
|
88
|
+
await esbuild.build({
|
|
89
|
+
entryPoints: [filepath],
|
|
90
|
+
bundle: true,
|
|
91
|
+
keepNames: true,
|
|
92
|
+
treeShaking: true,
|
|
93
|
+
minifyIdentifiers: false,
|
|
94
|
+
minifySyntax: false,
|
|
95
|
+
minifyWhitespace: false,
|
|
96
|
+
platform: "node",
|
|
97
|
+
target: "es2022",
|
|
98
|
+
format: "esm",
|
|
99
|
+
outfile: compiledFilepath,
|
|
100
|
+
});
|
|
109
101
|
}
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
catch (error) {
|
|
103
|
+
error.message = `TypeScript Error in ${filepath}:\n${error.message}`;
|
|
104
|
+
throw error;
|
|
112
105
|
}
|
|
106
|
+
return await import(compiledFilepath);
|
|
113
107
|
}
|
|
114
108
|
//# sourceMappingURL=config.js.map
|
package/dist/vite/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/vite/config.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAC;AACxC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/vite/config.ts"],"names":[],"mappings":"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"}
|
package/dist/vite/config.test.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import assert from "node:assert";
|
|
2
|
+
import path from "node:path";
|
|
2
3
|
import test from "node:test";
|
|
3
|
-
import {
|
|
4
|
+
import { loadConfig } from "./config.js";
|
|
4
5
|
test("Should correctly load zudoku.config.ts file", async (t) => {
|
|
5
|
-
const
|
|
6
|
-
const config = await
|
|
6
|
+
const rootPath = path.resolve("../../samples/with-config/");
|
|
7
|
+
const config = await loadConfig(rootPath, "zudoku.config.ts");
|
|
7
8
|
assert.equal(config.default.ui.headerTitle, "My Portal");
|
|
8
9
|
});
|
|
9
10
|
//# sourceMappingURL=config.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/vite/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/vite/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC"}
|
package/dist/vite/dev-server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import express from "express";
|
|
2
2
|
import { createServer as createViteServer } from "vite";
|
|
3
3
|
import { createGraphQLServer } from "../app/oas/graphql/index.js";
|
|
4
|
-
import { getViteConfig } from "./config.js";
|
|
4
|
+
import { getAppMainTsxPath, getViteConfig } from "./config.js";
|
|
5
5
|
import { getDevHtml } from "./html.js";
|
|
6
6
|
export class DevServer {
|
|
7
7
|
options;
|
|
@@ -20,7 +20,8 @@ export class DevServer {
|
|
|
20
20
|
app.use(vite.middlewares);
|
|
21
21
|
app.use("*", async (req, res) => {
|
|
22
22
|
try {
|
|
23
|
-
const
|
|
23
|
+
const jsEntry = getAppMainTsxPath();
|
|
24
|
+
const rawHtml = getDevHtml(jsEntry);
|
|
24
25
|
const indexHtml = await vite.transformIndexHtml(req.url, rawHtml);
|
|
25
26
|
// Send the transformed index.html back to the client
|
|
26
27
|
res.status(200).set({ "Content-Type": "text/html" }).end(indexHtml);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/vite/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/vite/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,SAAS;IAGA;IAFZ,MAAM,CAAqB;IAEnC,YAAoB,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;IAAG,CAAC;IAE9D,KAAK,CAAC,KAAK;QACT,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QAEtB,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,mBAAmB,CAAC;YAClC,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAElE,qDAAqD;gBACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzB,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
package/dist/vite/html.d.ts
CHANGED
package/dist/vite/html.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export function getDevHtml() {
|
|
1
|
+
export function getDevHtml(jsEntry) {
|
|
3
2
|
return `<!doctype html>
|
|
4
3
|
<html lang="en" class="dark">
|
|
5
4
|
<head>
|
|
@@ -8,7 +7,7 @@ export function getDevHtml() {
|
|
|
8
7
|
</head>
|
|
9
8
|
<body>
|
|
10
9
|
<div id="root"></div>
|
|
11
|
-
<script type="module" src="${
|
|
10
|
+
<script type="module" src="${jsEntry}"></script>
|
|
12
11
|
</body>
|
|
13
12
|
</html>
|
|
14
13
|
`;
|
package/dist/vite/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/vite/html.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/vite/html.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO;;;;;;;;iCAQwB,OAAO;;;CAGvC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,GAIT;IACC,OAAO;;;;;;;6CAOoC,OAAO;+CACL,QAAQ;;;;;QAK/C,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getConfigExportCode } from "./plugin-config.js";
|
|
2
|
+
const viteApiPlugin = (config) => {
|
|
3
|
+
const virtualModuleId = "virtual:zudoku-api-plugins";
|
|
4
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
5
|
+
return {
|
|
6
|
+
name: "vite-zudoku-api-plugins",
|
|
7
|
+
resolveId(id) {
|
|
8
|
+
if (id === virtualModuleId) {
|
|
9
|
+
return resolvedVirtualModuleId;
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
load(id) {
|
|
13
|
+
if (id === resolvedVirtualModuleId) {
|
|
14
|
+
const code = [
|
|
15
|
+
// IMPORTANT! This path here is important, we MUST resolve
|
|
16
|
+
// files here as Typescript from the appDir
|
|
17
|
+
getConfigExportCode(config.rootDir),
|
|
18
|
+
`import { openApiPlugin } from "${config.appDir}/plugins/openapi/index.tsx";`,
|
|
19
|
+
`const configuredApiPlugins = [];`,
|
|
20
|
+
];
|
|
21
|
+
if (config?.apis) {
|
|
22
|
+
if (Array.isArray(config.apis)) {
|
|
23
|
+
config.apis.forEach((c, i) => {
|
|
24
|
+
code.push(...[
|
|
25
|
+
`// @ts-ignore`, // To make tests pass
|
|
26
|
+
`configuredApiPlugins.push(openApiPlugin(config.apis?[${i}]));`,
|
|
27
|
+
]);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
code.push(...[
|
|
32
|
+
`// @ts-ignore`, // To make tests pass
|
|
33
|
+
`configuredApiPlugins.push(openApiPlugin(config.apis));`,
|
|
34
|
+
]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
code.push(`export { configuredApiPlugins };`);
|
|
38
|
+
return {
|
|
39
|
+
code: code.join("\n"),
|
|
40
|
+
map: null,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export default viteApiPlugin;
|
|
47
|
+
//# sourceMappingURL=plugin-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-api.js","sourceRoot":"","sources":["../../src/vite/plugin-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,aAAa,GAAG,CAAC,MAA2B,EAAU,EAAE;IAC5D,MAAM,eAAe,GAAG,4BAA4B,CAAC;IACrD,MAAM,uBAAuB,GAAG,IAAI,GAAG,eAAe,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,SAAS,CAAC,EAAE;YACV,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,uBAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAa;oBACrB,0DAA0D;oBAC1D,2CAA2C;oBAC3C,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;oBACnC,kCAAkC,MAAM,CAAC,MAAM,8BAA8B;oBAC7E,kCAAkC;iBACnC,CAAC;gBAEF,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;oBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;4BAC3B,IAAI,CAAC,IAAI,CACP,GAAG;gCACD,eAAe,EAAE,qBAAqB;gCACtC,wDAAwD,CAAC,MAAM;6BAChE,CACF,CAAC;wBACJ,CAAC,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,IAAI,CACP,GAAG;4BACD,eAAe,EAAE,qBAAqB;4BACtC,wDAAwD;yBACzD,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAE9C,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,IAAI;iBACV,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getConfigExportCode } from "./plugin-config.js";
|
|
3
|
+
const viteAuthPlugin = (config) => {
|
|
4
|
+
const virtualModuleId = "virtual:zudoku-auth";
|
|
5
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
6
|
+
return {
|
|
7
|
+
name: "zudoku-auth-plugin", // required, will show up in warnings and errors
|
|
8
|
+
resolveId(id) {
|
|
9
|
+
if (id === virtualModuleId) {
|
|
10
|
+
return resolvedVirtualModuleId;
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
load(id) {
|
|
14
|
+
if (id === resolvedVirtualModuleId) {
|
|
15
|
+
if (!config.authentication) {
|
|
16
|
+
return `export const configuredAuthProvider = undefined;`;
|
|
17
|
+
}
|
|
18
|
+
// TODO: Validate that the authConfig.type is a valid authentication provider
|
|
19
|
+
return [
|
|
20
|
+
getConfigExportCode(config.rootDir),
|
|
21
|
+
`import authProvider from "${path.join(config.appDir, "authentication", `${config.authentication.type}.ts`)}";`,
|
|
22
|
+
`export const configuredAuthProvider = authProvider(config.authentication);`,
|
|
23
|
+
].join("\n");
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export default viteAuthPlugin;
|
|
29
|
+
//# sourceMappingURL=plugin-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-auth.js","sourceRoot":"","sources":["../../src/vite/plugin-auth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,cAAc,GAAG,CAAC,MAA2B,EAAgB,EAAE;IACnE,MAAM,eAAe,GAAG,qBAAqB,CAAC;IAC9C,MAAM,uBAAuB,GAAG,IAAI,GAAG,eAAe,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,oBAAoB,EAAE,gDAAgD;QAC5E,SAAS,CAAC,EAAE;YACV,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,uBAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBAC3B,OAAO,kDAAkD,CAAC;gBAC5D,CAAC;gBACD,6EAA6E;gBAC7E,OAAO;oBACL,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;oBACnC,6BAA6B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI;oBAC/G,4EAA4E;iBAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
export function getConfigExportCode(rootDir) {
|
|
3
|
+
const configPath = path.join(rootDir, `/node_modules/.zudoku/zudoku.config.mjs`);
|
|
4
|
+
return `import config from "${configPath}"; export default config;`;
|
|
5
|
+
}
|
|
6
|
+
const viteConfigPlugin = ({ rootDir }) => {
|
|
7
|
+
const virtualModuleId = "virtual:zudoku-config";
|
|
8
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
9
|
+
return {
|
|
10
|
+
name: "zudoku-config-plugin",
|
|
11
|
+
resolveId(id) {
|
|
12
|
+
if (id === virtualModuleId) {
|
|
13
|
+
return resolvedVirtualModuleId;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
load(id) {
|
|
17
|
+
if (id === resolvedVirtualModuleId) {
|
|
18
|
+
return getConfigExportCode(rootDir);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export default viteConfigPlugin;
|
|
24
|
+
//# sourceMappingURL=plugin-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-config.js","sourceRoot":"","sources":["../../src/vite/plugin-config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,OAAO,EACP,yCAAyC,CAC1C,CAAC;IACF,OAAO,uBAAuB,UAAU,2BAA2B,CAAC;AACtE,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,EAAE,OAAO,EAAuB,EAAgB,EAAE;IAC1E,MAAM,eAAe,GAAG,uBAAuB,CAAC;IAChD,MAAM,uBAAuB,GAAG,IAAI,GAAG,eAAe,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,SAAS,CAAC,EAAE;YACV,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,uBAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;gBACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const viteDocsPlugin = (config) => {
|
|
2
|
+
const virtualModuleId = "virtual:zudoku-docs-plugins";
|
|
3
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
4
|
+
return {
|
|
5
|
+
name: "vite-zudoku-docs-plugin",
|
|
6
|
+
resolveId(id) {
|
|
7
|
+
if (id === virtualModuleId) {
|
|
8
|
+
return resolvedVirtualModuleId;
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
load(id) {
|
|
12
|
+
if (id === resolvedVirtualModuleId) {
|
|
13
|
+
const code = [
|
|
14
|
+
// IMPORTANT! This path here is important, we MUST resolve
|
|
15
|
+
// files here as Typescript from the appDir
|
|
16
|
+
`import { markdownPlugin } from "${config.appDir}/plugins/markdown/index.tsx";`,
|
|
17
|
+
`const configuredDocsPlugins = [];`,
|
|
18
|
+
];
|
|
19
|
+
const docsConfigs = config?.docs
|
|
20
|
+
? Array.isArray(config.docs)
|
|
21
|
+
? config.docs
|
|
22
|
+
: [config.docs]
|
|
23
|
+
: [];
|
|
24
|
+
docsConfigs.forEach((docsConfig) => {
|
|
25
|
+
code.push(...[
|
|
26
|
+
`// @ts-ignore`, // To make tests pass
|
|
27
|
+
`const markdownFiles = import.meta.glob(${JSON.stringify(docsConfig.files)}, {`,
|
|
28
|
+
` eager: false,`,
|
|
29
|
+
`});`,
|
|
30
|
+
`configuredDocsPlugins.push(markdownPlugin({ markdownFiles }));`,
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
code.push(`export { configuredDocsPlugins };`);
|
|
34
|
+
return {
|
|
35
|
+
code: code.join("\n"),
|
|
36
|
+
map: null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export default viteDocsPlugin;
|
|
43
|
+
//# sourceMappingURL=plugin-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-docs.js","sourceRoot":"","sources":["../../src/vite/plugin-docs.ts"],"names":[],"mappings":"AAGA,MAAM,cAAc,GAAG,CAAC,MAA2B,EAAU,EAAE;IAC7D,MAAM,eAAe,GAAG,6BAA6B,CAAC;IACtD,MAAM,uBAAuB,GAAG,IAAI,GAAG,eAAe,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,SAAS,CAAC,EAAE;YACV,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,uBAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,uBAAuB,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAa;oBACrB,0DAA0D;oBAC1D,2CAA2C;oBAC3C,mCAAmC,MAAM,CAAC,MAAM,+BAA+B;oBAC/E,mCAAmC;iBACpC,CAAC;gBACF,MAAM,WAAW,GAAiB,MAAM,EAAE,IAAI;oBAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC1B,CAAC,CAAC,MAAM,CAAC,IAAI;wBACb,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,CAAC,CAAC,EAAE,CAAC;gBAEP,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;oBACjC,IAAI,CAAC,IAAI,CACP,GAAG;wBACD,eAAe,EAAE,qBAAqB;wBACtC,0CAA0C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;wBAC/E,iBAAiB;wBACjB,KAAK;wBACL,gEAAgE;qBACjE,CACF,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAE/C,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrB,GAAG,EAAE,IAAI;iBACV,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import assert from "node:assert";
|
|
3
|
+
import test from "node:test";
|
|
4
|
+
import { checkTypescriptString } from "../ts.js";
|
|
5
|
+
import viteDocsPlugin from "./plugin-docs.js";
|
|
6
|
+
test.only("Builds code", async (t) => {
|
|
7
|
+
const plugin = viteDocsPlugin({
|
|
8
|
+
docs: { files: "docs/**/*.md" },
|
|
9
|
+
appDir: "",
|
|
10
|
+
});
|
|
11
|
+
if (!plugin.load) {
|
|
12
|
+
throw new Error("Plugin does not have a load function");
|
|
13
|
+
}
|
|
14
|
+
if (typeof plugin.load !== "function") {
|
|
15
|
+
throw new Error("Plugin.load is not a function");
|
|
16
|
+
}
|
|
17
|
+
const result = await plugin.load.call(
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
{}, "\0virtual:markdown-plugins");
|
|
20
|
+
if (result && typeof result === "object" && "code" in result) {
|
|
21
|
+
const diagnostics = await checkTypescriptString(result.code);
|
|
22
|
+
if (diagnostics.length > 0) {
|
|
23
|
+
console.error(diagnostics);
|
|
24
|
+
}
|
|
25
|
+
assert.equal(diagnostics.length, 0);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
assert.fail("Invalid return value from plugin.load");
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=plugin-docs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-docs.test.js","sourceRoot":"","sources":["../../src/vite/plugin-docs.test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACnC,MAAM,MAAM,GAAG,cAAc,CAAC;QAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;QAC/B,MAAM,EAAE,EAAE;KACJ,CAAC,CAAC;IACV,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI;IACnC,8DAA8D;IAC9D,EAAS,EACT,4BAA4B,CAC7B,CAAC;IACF,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const themeScript = `
|
|
2
|
+
if (
|
|
3
|
+
localStorage.getItem("theme") === "dark" ||
|
|
4
|
+
(!("theme" in localStorage) &&
|
|
5
|
+
window.matchMedia("(prefers-color-scheme: dark)").matches)
|
|
6
|
+
) {
|
|
7
|
+
document.documentElement.classList.add("dark");
|
|
8
|
+
} else {
|
|
9
|
+
document.documentElement.classList.remove("dark");
|
|
10
|
+
}
|
|
11
|
+
`.trim();
|
|
12
|
+
const viteHtmlPlugin = () => {
|
|
13
|
+
return {
|
|
14
|
+
name: "vite-zudoku-core-plugin",
|
|
15
|
+
config: () => ({
|
|
16
|
+
worker: { format: "es" },
|
|
17
|
+
}),
|
|
18
|
+
transformIndexHtml: (html) => {
|
|
19
|
+
return {
|
|
20
|
+
html,
|
|
21
|
+
tags: [
|
|
22
|
+
{
|
|
23
|
+
tag: "script",
|
|
24
|
+
attrs: { type: "module" },
|
|
25
|
+
children: themeScript,
|
|
26
|
+
injectTo: "head",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tag: "link",
|
|
30
|
+
attrs: {
|
|
31
|
+
rel: "preconnect",
|
|
32
|
+
href: "https://cdn.zuplo.com/",
|
|
33
|
+
},
|
|
34
|
+
injectTo: "head",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
tag: "link",
|
|
38
|
+
attrs: {
|
|
39
|
+
rel: "stylesheet",
|
|
40
|
+
href: "https://cdn.zuplo.com/static/fonts/geist.css",
|
|
41
|
+
},
|
|
42
|
+
injectTo: "head",
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export default viteHtmlPlugin;
|
|
50
|
+
//# sourceMappingURL=plugin-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-html.js","sourceRoot":"","sources":["../../src/vite/plugin-html.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG;;;;;;;;;;CAUnB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,cAAc,GAAG,GAAW,EAAE;IAClC,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACzB,CAAC;QACF,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE;oBACJ;wBACE,GAAG,EAAE,QAAQ;wBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,QAAQ,EAAE,WAAW;wBACrB,QAAQ,EAAE,MAAM;qBACjB;oBACD;wBACE,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE;4BACL,GAAG,EAAE,YAAY;4BACjB,IAAI,EAAE,wBAAwB;yBAC/B;wBACD,QAAQ,EAAE,MAAM;qBACjB;oBACD;wBACE,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE;4BACL,GAAG,EAAE,YAAY;4BACjB,IAAI,EAAE,8CAA8C;yBACrD;wBACD,QAAQ,EAAE,MAAM;qBACjB;iBACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Options } from "@mdx-js/rollup";
|
|
2
|
+
import { Plugin } from "vite";
|
|
3
|
+
export type DevPortalPluginOptions = {
|
|
4
|
+
remarkPlugins?: Options["remarkPlugins"];
|
|
5
|
+
rehypePlugins?: Options["rehypePlugins"];
|
|
6
|
+
};
|
|
7
|
+
declare const viteMdxPlugin: ({ remarkPlugins, rehypePlugins, }?: DevPortalPluginOptions) => Plugin;
|
|
8
|
+
export default viteMdxPlugin;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import rehypeMetaAsAttributes from "@lekoarts/rehype-meta-as-attributes";
|
|
2
|
+
import mdx from "@mdx-js/rollup";
|
|
3
|
+
import withToc from "@stefanprobst/rehype-extract-toc";
|
|
4
|
+
import withTocExport from "@stefanprobst/rehype-extract-toc/mdx";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import rehypeSlug from "rehype-slug";
|
|
7
|
+
import remarkComment from "remark-comment";
|
|
8
|
+
import remarkDirective from "remark-directive";
|
|
9
|
+
import remarkDirectiveRehype from "remark-directive-rehype";
|
|
10
|
+
import remarkFrontmatter from "remark-frontmatter";
|
|
11
|
+
import remarkGfm from "remark-gfm";
|
|
12
|
+
import remarkMdxFrontmatter from "remark-mdx-frontmatter";
|
|
13
|
+
import { visit } from "unist-util-visit";
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
+
const rehypeCodeBlockPlugin = () => (tree) => {
|
|
16
|
+
visit(tree, "element", (node, index, parent) => {
|
|
17
|
+
if (node.tagName === "code") {
|
|
18
|
+
node.properties.inline = parent?.tagName !== "pre";
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
const remarkLinkRewritePlugin = () => (tree) => {
|
|
24
|
+
visit(tree, "link", (node) => {
|
|
25
|
+
if (!node.url)
|
|
26
|
+
return;
|
|
27
|
+
if (!node.url.startsWith("http") && !node.url.startsWith("/")) {
|
|
28
|
+
node.url = path.join("../", node.url);
|
|
29
|
+
}
|
|
30
|
+
node.url = node.url.replace(/\.mdx?(#.*?)?/, "$1");
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const viteMdxPlugin = ({ remarkPlugins, rehypePlugins, } = {}) => {
|
|
34
|
+
return {
|
|
35
|
+
enforce: "pre",
|
|
36
|
+
...mdx({
|
|
37
|
+
providerImportSource: "@mdx-js/react",
|
|
38
|
+
remarkPlugins: [
|
|
39
|
+
remarkComment,
|
|
40
|
+
remarkGfm,
|
|
41
|
+
remarkFrontmatter,
|
|
42
|
+
remarkMdxFrontmatter,
|
|
43
|
+
remarkDirective,
|
|
44
|
+
remarkDirectiveRehype,
|
|
45
|
+
remarkLinkRewritePlugin,
|
|
46
|
+
...(remarkPlugins ?? []),
|
|
47
|
+
],
|
|
48
|
+
rehypePlugins: [
|
|
49
|
+
rehypeSlug,
|
|
50
|
+
rehypeCodeBlockPlugin,
|
|
51
|
+
rehypeMetaAsAttributes,
|
|
52
|
+
withToc,
|
|
53
|
+
withTocExport,
|
|
54
|
+
...(rehypePlugins ?? []),
|
|
55
|
+
],
|
|
56
|
+
}),
|
|
57
|
+
name: "vite-zudoku-mdx-plugin",
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
export default viteMdxPlugin;
|
|
61
|
+
//# sourceMappingURL=plugin-mdx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-mdx.js","sourceRoot":"","sources":["../../src/vite/plugin-mdx.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,qCAAqC,CAAC;AACzE,OAAO,GAAqB,MAAM,gBAAgB,CAAC;AACnD,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,8DAA8D;AAC9D,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAS,EAAE,EAAE;IAChD,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAS,EAAE,EAAE;IAClD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QAEtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAOF,MAAM,aAAa,GAAG,CAAC,EACrB,aAAa,EACb,aAAa,MACa,EAAE,EAAU,EAAE;IACxC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,GAAG,GAAG,CAAC;YACL,oBAAoB,EAAE,eAAe;YACrC,aAAa,EAAE;gBACb,aAAa;gBACb,SAAS;gBACT,iBAAiB;gBACjB,oBAAoB;gBACpB,eAAe;gBACf,qBAAqB;gBACrB,uBAAuB;gBACvB,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;aACzB;YACD,aAAa,EAAE;gBACb,UAAU;gBACV,qBAAqB;gBACrB,sBAAsB;gBACtB,OAAO;gBACP,aAAa;gBACb,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;aACzB;SACF,CAAC;QACF,IAAI,EAAE,wBAAwB;KAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/dist/vite/plugin.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import { type Options } from "@mdx-js/rollup";
|
|
2
1
|
import { type PluginOption } from "vite";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
rehypePlugins?: Options["rehypePlugins"];
|
|
6
|
-
};
|
|
7
|
-
export declare const devPortalPlugin: ({ remarkPlugins, rehypePlugins, }?: DevPortalPluginOptions) => PluginOption[];
|
|
2
|
+
import { ZudokuPluginOptions } from "../config/config.js";
|
|
3
|
+
export default function vitePlugin(config: ZudokuPluginOptions): PluginOption[];
|
package/dist/vite/plugin.js
CHANGED
|
@@ -1,109 +1,19 @@
|
|
|
1
|
-
import rehypeMetaAsAttributes from "@lekoarts/rehype-meta-as-attributes";
|
|
2
|
-
import mdx from "@mdx-js/rollup";
|
|
3
|
-
import withToc from "@stefanprobst/rehype-extract-toc";
|
|
4
|
-
import withTocExport from "@stefanprobst/rehype-extract-toc/mdx";
|
|
5
1
|
import react from "@vitejs/plugin-react";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
import remarkMdxFrontmatter from "remark-mdx-frontmatter";
|
|
14
|
-
import { visit } from "unist-util-visit";
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
-
const rehypeCodeBlockPlugin = () => (tree) => {
|
|
17
|
-
visit(tree, "element", (node, index, parent) => {
|
|
18
|
-
if (node.tagName === "code") {
|
|
19
|
-
node.properties.inline = parent?.tagName !== "pre";
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
-
const remarkLinkRewritePlugin = () => (tree) => {
|
|
25
|
-
visit(tree, "link", (node) => {
|
|
26
|
-
if (!node.url)
|
|
27
|
-
return;
|
|
28
|
-
if (!node.url.startsWith("http") && !node.url.startsWith("/")) {
|
|
29
|
-
node.url = path.join("../", node.url);
|
|
30
|
-
}
|
|
31
|
-
node.url = node.url.replace(/\.mdx?(#.*?)?/, "$1");
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
const themeScript = `
|
|
35
|
-
if (
|
|
36
|
-
localStorage.getItem("theme") === "dark" ||
|
|
37
|
-
(!("theme" in localStorage) &&
|
|
38
|
-
window.matchMedia("(prefers-color-scheme: dark)").matches)
|
|
39
|
-
) {
|
|
40
|
-
document.documentElement.classList.add("dark");
|
|
41
|
-
} else {
|
|
42
|
-
document.documentElement.classList.remove("dark");
|
|
43
|
-
}
|
|
44
|
-
`.trim();
|
|
45
|
-
export const devPortalPlugin = ({ remarkPlugins, rehypePlugins, } = {}) => {
|
|
2
|
+
import viteApiPlugin from "./plugin-api.js";
|
|
3
|
+
import viteAuthPlugin from "./plugin-auth.js";
|
|
4
|
+
import viteConfigPlugin from "./plugin-config.js";
|
|
5
|
+
import viteDocsPlugin from "./plugin-docs.js";
|
|
6
|
+
import viteHtmlPlugin from "./plugin-html.js";
|
|
7
|
+
import viteMdxPlugin from "./plugin-mdx.js";
|
|
8
|
+
export default function vitePlugin(config) {
|
|
46
9
|
return [
|
|
47
|
-
|
|
48
|
-
enforce: "pre",
|
|
49
|
-
...mdx({
|
|
50
|
-
providerImportSource: "@mdx-js/react",
|
|
51
|
-
remarkPlugins: [
|
|
52
|
-
remarkComment,
|
|
53
|
-
remarkGfm,
|
|
54
|
-
remarkFrontmatter,
|
|
55
|
-
remarkMdxFrontmatter,
|
|
56
|
-
remarkDirective,
|
|
57
|
-
remarkDirectiveRehype,
|
|
58
|
-
remarkLinkRewritePlugin,
|
|
59
|
-
...(remarkPlugins ?? []),
|
|
60
|
-
],
|
|
61
|
-
rehypePlugins: [
|
|
62
|
-
rehypeSlug,
|
|
63
|
-
rehypeCodeBlockPlugin,
|
|
64
|
-
rehypeMetaAsAttributes,
|
|
65
|
-
withToc,
|
|
66
|
-
withTocExport,
|
|
67
|
-
...(rehypePlugins ?? []),
|
|
68
|
-
],
|
|
69
|
-
}),
|
|
70
|
-
},
|
|
10
|
+
viteMdxPlugin(config.build),
|
|
71
11
|
react({ include: /\.(mdx?|jsx?|tsx?)$/ }),
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
transformIndexHtml: (html) => {
|
|
78
|
-
return {
|
|
79
|
-
html,
|
|
80
|
-
tags: [
|
|
81
|
-
{
|
|
82
|
-
tag: "script",
|
|
83
|
-
attrs: { type: "module" },
|
|
84
|
-
children: themeScript,
|
|
85
|
-
injectTo: "head",
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
tag: "link",
|
|
89
|
-
attrs: {
|
|
90
|
-
rel: "preconnect",
|
|
91
|
-
href: "https://cdn.zuplo.com/",
|
|
92
|
-
},
|
|
93
|
-
injectTo: "head",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
tag: "link",
|
|
97
|
-
attrs: {
|
|
98
|
-
rel: "stylesheet",
|
|
99
|
-
href: "https://cdn.zuplo.com/static/fonts/geist.css",
|
|
100
|
-
},
|
|
101
|
-
injectTo: "head",
|
|
102
|
-
},
|
|
103
|
-
],
|
|
104
|
-
};
|
|
105
|
-
},
|
|
106
|
-
},
|
|
12
|
+
viteHtmlPlugin(),
|
|
13
|
+
viteConfigPlugin(config),
|
|
14
|
+
viteAuthPlugin(config),
|
|
15
|
+
viteDocsPlugin(config),
|
|
16
|
+
viteApiPlugin(config),
|
|
107
17
|
];
|
|
108
|
-
}
|
|
18
|
+
}
|
|
109
19
|
//# sourceMappingURL=plugin.js.map
|
package/dist/vite/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAGzC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,MAA2B;IAE3B,OAAO;QACL,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACzC,cAAc,EAAE;QAChB,gBAAgB,CAAC,MAAM,CAAC;QACxB,cAAc,CAAC,MAAM,CAAC;QACtB,cAAc,CAAC,MAAM,CAAC;QACtB,aAAa,CAAC,MAAM,CAAC;KACtB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zudoku",
|
|
3
|
-
"version": "0.1.1-dev.
|
|
3
|
+
"version": "0.1.1-dev.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"object-hash": "3.0.0",
|
|
76
76
|
"openapi-types": "12.1.3",
|
|
77
77
|
"pino": "^9.2.0",
|
|
78
|
+
"pino-pretty": "^11.2.1",
|
|
78
79
|
"postcss": "8.4.38",
|
|
79
80
|
"posthog-node": "^4.0.1",
|
|
80
81
|
"prism-react-renderer": "2.3.1",
|
package/src/app/App.tsx
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import "./main.css";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
3
|
+
// Virtual config
|
|
4
|
+
import config from "virtual:zudoku-config";
|
|
5
|
+
|
|
6
|
+
// Virtual Plugins
|
|
7
|
+
import { configuredApiPlugins } from "virtual:zudoku-api-plugins";
|
|
8
|
+
import { configuredAuthProvider } from "virtual:zudoku-auth";
|
|
9
|
+
import { configuredDocsPlugins } from "virtual:zudoku-docs-plugins";
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
// Base React Component
|
|
12
|
+
import DevPortal from "./DevPortal.js";
|
|
9
13
|
|
|
10
14
|
export default function App() {
|
|
11
15
|
return (
|
|
@@ -19,45 +23,8 @@ export default function App() {
|
|
|
19
23
|
"https://cdn.zuplo.com/www/favicon.png",
|
|
20
24
|
}}
|
|
21
25
|
navigation={config.navigation ?? []}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// ? getAuthProvider(config.authentication)
|
|
25
|
-
// : undefined
|
|
26
|
-
// }
|
|
27
|
-
plugins={[
|
|
28
|
-
...(config.docs
|
|
29
|
-
? Array.isArray(config.docs)
|
|
30
|
-
? config.docs
|
|
31
|
-
: [config.docs]
|
|
32
|
-
: []
|
|
33
|
-
).map((docs) =>
|
|
34
|
-
markdownPlugin({
|
|
35
|
-
markdownFiles: docs?.files ?? {},
|
|
36
|
-
}),
|
|
37
|
-
),
|
|
38
|
-
...(config.apis
|
|
39
|
-
? Array.isArray(config.apis)
|
|
40
|
-
? config.apis
|
|
41
|
-
: [config.apis]
|
|
42
|
-
: []
|
|
43
|
-
).map((api) => openApiPlugin(api)),
|
|
44
|
-
// if (!accessToken) {
|
|
45
|
-
// return;
|
|
46
|
-
// }
|
|
47
|
-
|
|
48
|
-
// const consumers = await fetch(
|
|
49
|
-
// "https://zudoku-customer-main-b36fa2f.d2.zuplo.dev/v1/developer/api-keys",
|
|
50
|
-
// {
|
|
51
|
-
// headers: {
|
|
52
|
-
// Authorization: `Bearer ${accessToken}`,
|
|
53
|
-
// },
|
|
54
|
-
// },
|
|
55
|
-
// );
|
|
56
|
-
|
|
57
|
-
// return { consumers: [await consumers.json()] };
|
|
58
|
-
// },
|
|
59
|
-
// }),
|
|
60
|
-
]}
|
|
26
|
+
authentication={configuredAuthProvider}
|
|
27
|
+
plugins={[...configuredDocsPlugins, ...configuredApiPlugins]}
|
|
61
28
|
/>
|
|
62
29
|
);
|
|
63
30
|
}
|
package/dist/app/config.d.ts
DELETED
package/dist/app/config.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// Search for config files
|
|
2
|
-
const configs = import.meta.glob("/zudoku.config.{js,jsx,ts,tsx,mjs}", { eager: true });
|
|
3
|
-
let config = {};
|
|
4
|
-
// If we found any, load the first one
|
|
5
|
-
if (Object.keys(configs).length > 0) {
|
|
6
|
-
config = configs[Object.keys(configs)[0]].default;
|
|
7
|
-
}
|
|
8
|
-
export default config;
|
|
9
|
-
//# sourceMappingURL=config.js.map
|
package/dist/app/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/app/config.ts"],"names":[],"mappings":"AAMA,0BAA0B;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAC9B,oCAAoC,EACpC,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAC;AAEF,IAAI,MAAM,GAAiB,EAAE,CAAC;AAE9B,sCAAsC;AACtC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACpC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;AAED,eAAe,MAAM,CAAC"}
|
package/dist/app/markdowns.d.ts
DELETED
package/dist/app/markdowns.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdowns.js","sourceRoot":"","sources":["../../src/app/markdowns.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAY,iBAAiB,EAAE;IAC/D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC;AAEH,eAAe,SAAS,CAAC"}
|
package/src/app/config.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ZudokuConfig } from "../config/config.js";
|
|
2
|
-
|
|
3
|
-
interface ZuploConfigImport {
|
|
4
|
-
default: ZudokuConfig;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
// Search for config files
|
|
8
|
-
const configs = import.meta.glob<ZuploConfigImport>(
|
|
9
|
-
"/zudoku.config.{js,jsx,ts,tsx,mjs}",
|
|
10
|
-
{ eager: true },
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
let config: ZudokuConfig = {};
|
|
14
|
-
|
|
15
|
-
// If we found any, load the first one
|
|
16
|
-
if (Object.keys(configs).length > 0) {
|
|
17
|
-
config = configs[Object.keys(configs)[0]].default;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export default config;
|