zudoku 0.1.1-dev.7 → 0.1.1-dev.9

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 (61) hide show
  1. package/dist/app/App.js +8 -38
  2. package/dist/app/App.js.map +1 -1
  3. package/dist/app/main.js +2 -14
  4. package/dist/app/main.js.map +1 -1
  5. package/dist/cli/cmds/dev.js +0 -1
  6. package/dist/cli/cmds/dev.js.map +1 -1
  7. package/dist/cli/common/logger.d.ts +1 -2
  8. package/dist/cli/common/logger.js +2 -4
  9. package/dist/cli/common/logger.js.map +1 -1
  10. package/dist/cli/dev/handler.d.ts +1 -1
  11. package/dist/cli/dev/handler.js +11 -2
  12. package/dist/cli/dev/handler.js.map +1 -1
  13. package/dist/config/config.d.ts +11 -5
  14. package/dist/ts.d.ts +6 -0
  15. package/dist/ts.js +62 -0
  16. package/dist/ts.js.map +1 -0
  17. package/dist/vite/config.d.ts +1 -1
  18. package/dist/vite/config.js +50 -45
  19. package/dist/vite/config.js.map +1 -1
  20. package/dist/vite/config.test.js +4 -3
  21. package/dist/vite/config.test.js.map +1 -1
  22. package/dist/vite/dev-server.js +3 -2
  23. package/dist/vite/dev-server.js.map +1 -1
  24. package/dist/vite/html.d.ts +1 -1
  25. package/dist/vite/html.js +2 -3
  26. package/dist/vite/html.js.map +1 -1
  27. package/dist/vite/plugin-api.d.ts +4 -0
  28. package/dist/vite/plugin-api.js +47 -0
  29. package/dist/vite/plugin-api.js.map +1 -0
  30. package/dist/vite/plugin-auth.d.ts +4 -0
  31. package/dist/vite/plugin-auth.js +29 -0
  32. package/dist/vite/plugin-auth.js.map +1 -0
  33. package/dist/vite/plugin-config.d.ts +6 -0
  34. package/dist/vite/plugin-config.js +24 -0
  35. package/dist/vite/plugin-config.js.map +1 -0
  36. package/dist/vite/plugin-docs.d.ts +4 -0
  37. package/dist/vite/plugin-docs.js +43 -0
  38. package/dist/vite/plugin-docs.js.map +1 -0
  39. package/dist/vite/plugin-docs.test.d.ts +1 -0
  40. package/dist/vite/plugin-docs.test.js +31 -0
  41. package/dist/vite/plugin-docs.test.js.map +1 -0
  42. package/dist/vite/plugin-html.d.ts +3 -0
  43. package/dist/vite/plugin-html.js +50 -0
  44. package/dist/vite/plugin-html.js.map +1 -0
  45. package/dist/vite/plugin-mdx.d.ts +8 -0
  46. package/dist/vite/plugin-mdx.js +61 -0
  47. package/dist/vite/plugin-mdx.js.map +1 -0
  48. package/dist/vite/plugin.d.ts +2 -6
  49. package/dist/vite/plugin.js +14 -104
  50. package/dist/vite/plugin.js.map +1 -1
  51. package/package.json +19 -21
  52. package/src/app/App.tsx +11 -44
  53. package/src/app/main.tsx +2 -15
  54. package/dist/app/config.d.ts +0 -3
  55. package/dist/app/config.js +0 -9
  56. package/dist/app/config.js.map +0 -1
  57. package/dist/app/markdowns.d.ts +0 -3
  58. package/dist/app/markdowns.js +0 -5
  59. package/dist/app/markdowns.js.map +0 -1
  60. package/src/app/config.ts +0 -20
  61. package/src/app/markdowns.ts +0 -7
@@ -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,6 @@
1
+ import { PluginOption } from "vite";
2
+ export declare function getConfigExportCode(rootDir: string): string;
3
+ declare const viteConfigPlugin: ({ rootDir }: {
4
+ rootDir: string;
5
+ }) => PluginOption;
6
+ export default viteConfigPlugin;
@@ -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,4 @@
1
+ import { Plugin } from "vite";
2
+ import { ZudokuPluginOptions } from "../config/config.js";
3
+ declare const viteDocsPlugin: (config: ZudokuPluginOptions) => Plugin;
4
+ export default viteDocsPlugin;
@@ -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,3 @@
1
+ import { Plugin } from "vite";
2
+ declare const viteHtmlPlugin: () => Plugin;
3
+ export default viteHtmlPlugin;
@@ -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"}
@@ -1,7 +1,3 @@
1
- import { type Options } from "@mdx-js/rollup";
2
1
  import { type PluginOption } from "vite";
3
- export type DevPortalPluginOptions = {
4
- remarkPlugins?: Options["remarkPlugins"];
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[];
@@ -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 path from "node:path";
7
- import rehypeSlug from "rehype-slug";
8
- import remarkComment from "remark-comment";
9
- import remarkDirective from "remark-directive";
10
- import remarkDirectiveRehype from "remark-directive-rehype";
11
- import remarkFrontmatter from "remark-frontmatter";
12
- import remarkGfm from "remark-gfm";
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
- name: "zudoku-plugin",
74
- config: () => ({
75
- worker: { format: "es" },
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
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/vite/plugin.ts"],"names":[],"mappings":"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"}
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.7",
3
+ "version": "0.1.1-dev.9",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -41,40 +41,38 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@cfworker/json-schema": "1.12.8",
44
- "@clerk/clerk-js": "^5.2.2",
45
- "@graphql-typed-document-node/core": "^3.2.0",
44
+ "@clerk/clerk-js": "5.2.2",
45
+ "@graphql-typed-document-node/core": "3.2.0",
46
46
  "@lekoarts/rehype-meta-as-attributes": "3.0.1",
47
47
  "@mdx-js/react": "3.0.1",
48
48
  "@mdx-js/rollup": "3.0.1",
49
49
  "@pothos/core": "3.41.0",
50
50
  "@radix-ui/react-collapsible": "1.0.3",
51
- "@radix-ui/react-dialog": "^1.1.1",
52
- "@radix-ui/react-slot": "^1.1.0",
53
- "@radix-ui/react-tabs": "^1.1.0",
54
- "@sentry/node": "^8.11.0",
51
+ "@radix-ui/react-dialog": "1.1.1",
52
+ "@radix-ui/react-slot": "1.1.0",
53
+ "@radix-ui/react-tabs": "1.1.0",
54
+ "@sentry/node": "8.11.0",
55
55
  "@stefanprobst/rehype-extract-toc": "2.2.0",
56
56
  "@tailwindcss/typography": "0.5.13",
57
57
  "@tanstack/react-query": "5.35.1",
58
58
  "@vitejs/plugin-react": "4.3.0",
59
59
  "@zudoku/httpsnippet": "10.0.9",
60
- "@zuplo/pino-pretty-configurations": "^1.5.0",
61
60
  "autoprefixer": "10.4.19",
62
- "chalk": "^5.3.0",
61
+ "chalk": "5.3.0",
63
62
  "class-variance-authority": "0.7.0",
64
63
  "clsx": "2.1.1",
65
- "dotenv": "^16.4.5",
66
- "esbuild": "^0.23.0",
67
- "express": "^4.19.2",
68
- "graphql": "^16.9.0",
64
+ "dotenv": "16.4.5",
65
+ "esbuild": "0.23.0",
66
+ "express": "4.19.2",
67
+ "graphql": "16.9.0",
69
68
  "graphql-type-json": "0.3.2",
70
69
  "graphql-yoga": "5.2.0",
71
70
  "lru-cache": "10.2.0",
72
71
  "lucide-react": "0.378.0",
73
- "mdx": "^0.3.1",
72
+ "mdx": "0.3.1",
74
73
  "oauth4webapi": "2.10.4",
75
74
  "object-hash": "3.0.0",
76
75
  "openapi-types": "12.1.3",
77
- "pino": "^9.2.0",
78
76
  "postcss": "8.4.38",
79
77
  "posthog-node": "^4.0.1",
80
78
  "prism-react-renderer": "2.3.1",
@@ -91,19 +89,19 @@
91
89
  "remark-frontmatter": "5.0.0",
92
90
  "remark-gfm": "4.0.0",
93
91
  "remark-mdx-frontmatter": "4.0.0",
94
- "semver": "^7.6.2",
92
+ "semver": "7.6.2",
95
93
  "slugify": "1.6.6",
96
- "strip-ansi": "^7.1.0",
94
+ "strip-ansi": "7.1.0",
97
95
  "tailwind-merge": "2.3.0",
98
96
  "tailwindcss": "3.4.3",
99
97
  "ulid": "2.3.0",
100
98
  "unist-util-visit": "5.0.0",
101
99
  "urql": "4.1.0",
102
- "vite": "^5.3.1",
103
- "vite-plugin-dts": "^3.9.1",
100
+ "vite": "5.3.1",
101
+ "vite-plugin-dts": "3.9.1",
104
102
  "yaml": "2.4.1",
105
- "yargs": "^17.7.2",
106
- "zustand": "^4.5.4"
103
+ "yargs": "17.7.2",
104
+ "zustand": "4.5.4"
107
105
  },
108
106
  "devDependencies": {
109
107
  "@graphql-codegen/cli": "^5.0.2",
package/src/app/App.tsx CHANGED
@@ -1,11 +1,15 @@
1
1
  import "./main.css";
2
2
 
3
- import DevPortal from "./DevPortal.js";
4
- import { markdownPlugin } from "./plugins/markdown/index.js";
5
- import { openApiPlugin } from "./plugins/openapi/index.js";
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
- import config from "./config.js";
8
- // import markdowns from "./markdowns.js";
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
- // authentication={
23
- // config.authentication
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/src/app/main.tsx CHANGED
@@ -1,21 +1,8 @@
1
1
  import React from "react";
2
- import ReactDOM from "react-dom/client";
2
+ import { createRoot } from "react-dom/client";
3
3
  import App from "./App.js";
4
4
 
5
- // if (import.meta.env.DEV) {
6
- // const { default: wdyr } = await import(
7
- // "@welldone-software/why-did-you-render"
8
- // );
9
- //
10
- // wdyr(React, {
11
- // include: [/.*/],
12
- // exclude: [/^BrowserRouter/, /^Link/, /^Route/],
13
- // trackHooks: true,
14
- // trackAllPureComponents: true,
15
- // });
16
- // }
17
-
18
- ReactDOM.createRoot(document.getElementById("root")!).render(
5
+ createRoot(document.getElementById("root")!).render(
19
6
  <React.StrictMode>
20
7
  <App />
21
8
  </React.StrictMode>,
@@ -1,3 +0,0 @@
1
- import type { ZudokuConfig } from "../config/config.js";
2
- declare let config: ZudokuConfig;
3
- export default config;
@@ -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