@tanstack/start-plugin-core 1.20.3-alpha.1
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/LICENSE +21 -0
- package/README.md +12 -0
- package/dist/cjs/compilers.cjs +402 -0
- package/dist/cjs/compilers.cjs.map +1 -0
- package/dist/cjs/compilers.d.cts +21 -0
- package/dist/cjs/extractHtmlScripts.cjs +35 -0
- package/dist/cjs/extractHtmlScripts.cjs.map +1 -0
- package/dist/cjs/extractHtmlScripts.d.cts +4 -0
- package/dist/cjs/index.cjs +15 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +7 -0
- package/dist/cjs/nitro/build-nitro.cjs +18 -0
- package/dist/cjs/nitro/build-nitro.cjs.map +1 -0
- package/dist/cjs/nitro/build-nitro.d.cts +2 -0
- package/dist/cjs/nitro/build-sitemap.cjs +54 -0
- package/dist/cjs/nitro/build-sitemap.cjs.map +1 -0
- package/dist/cjs/nitro/build-sitemap.d.cts +9 -0
- package/dist/cjs/nitro/dev-server-plugin.cjs +128 -0
- package/dist/cjs/nitro/dev-server-plugin.cjs.map +1 -0
- package/dist/cjs/nitro/dev-server-plugin.d.cts +5 -0
- package/dist/cjs/nitro/nitro-plugin.cjs +128 -0
- package/dist/cjs/nitro/nitro-plugin.cjs.map +1 -0
- package/dist/cjs/nitro/nitro-plugin.d.cts +3 -0
- package/dist/cjs/plugin.cjs +117 -0
- package/dist/cjs/plugin.cjs.map +1 -0
- package/dist/cjs/plugin.d.cts +2713 -0
- package/dist/cjs/prerender.cjs +171 -0
- package/dist/cjs/prerender.cjs.map +1 -0
- package/dist/cjs/prerender.d.cts +8 -0
- package/dist/cjs/queue.cjs +131 -0
- package/dist/cjs/queue.cjs.map +1 -0
- package/dist/cjs/queue.d.cts +32 -0
- package/dist/cjs/routesManifestPlugin.cjs +165 -0
- package/dist/cjs/routesManifestPlugin.cjs.map +1 -0
- package/dist/cjs/routesManifestPlugin.d.cts +3 -0
- package/dist/cjs/schema.cjs +136 -0
- package/dist/cjs/schema.cjs.map +1 -0
- package/dist/cjs/schema.d.cts +8128 -0
- package/dist/cjs/start-compiler-plugin.cjs +72 -0
- package/dist/cjs/start-compiler-plugin.cjs.map +1 -0
- package/dist/cjs/start-compiler-plugin.d.cts +13 -0
- package/dist/cjs/start-server-routes-plugin/config.d.cts +49 -0
- package/dist/cjs/start-server-routes-plugin/plugin.cjs +608 -0
- package/dist/cjs/start-server-routes-plugin/plugin.cjs.map +1 -0
- package/dist/cjs/start-server-routes-plugin/plugin.d.cts +3 -0
- package/dist/cjs/start-server-routes-plugin/template.cjs +111 -0
- package/dist/cjs/start-server-routes-plugin/template.cjs.map +1 -0
- package/dist/cjs/start-server-routes-plugin/template.d.cts +34 -0
- package/dist/esm/compilers.d.ts +21 -0
- package/dist/esm/compilers.js +384 -0
- package/dist/esm/compilers.js.map +1 -0
- package/dist/esm/extractHtmlScripts.d.ts +4 -0
- package/dist/esm/extractHtmlScripts.js +18 -0
- package/dist/esm/extractHtmlScripts.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nitro/build-nitro.d.ts +2 -0
- package/dist/esm/nitro/build-nitro.js +18 -0
- package/dist/esm/nitro/build-nitro.js.map +1 -0
- package/dist/esm/nitro/build-sitemap.d.ts +9 -0
- package/dist/esm/nitro/build-sitemap.js +54 -0
- package/dist/esm/nitro/build-sitemap.js.map +1 -0
- package/dist/esm/nitro/dev-server-plugin.d.ts +5 -0
- package/dist/esm/nitro/dev-server-plugin.js +128 -0
- package/dist/esm/nitro/dev-server-plugin.js.map +1 -0
- package/dist/esm/nitro/nitro-plugin.d.ts +3 -0
- package/dist/esm/nitro/nitro-plugin.js +128 -0
- package/dist/esm/nitro/nitro-plugin.js.map +1 -0
- package/dist/esm/plugin.d.ts +2713 -0
- package/dist/esm/plugin.js +117 -0
- package/dist/esm/plugin.js.map +1 -0
- package/dist/esm/prerender.d.ts +8 -0
- package/dist/esm/prerender.js +171 -0
- package/dist/esm/prerender.js.map +1 -0
- package/dist/esm/queue.d.ts +32 -0
- package/dist/esm/queue.js +131 -0
- package/dist/esm/queue.js.map +1 -0
- package/dist/esm/routesManifestPlugin.d.ts +3 -0
- package/dist/esm/routesManifestPlugin.js +165 -0
- package/dist/esm/routesManifestPlugin.js.map +1 -0
- package/dist/esm/schema.d.ts +8128 -0
- package/dist/esm/schema.js +136 -0
- package/dist/esm/schema.js.map +1 -0
- package/dist/esm/start-compiler-plugin.d.ts +13 -0
- package/dist/esm/start-compiler-plugin.js +72 -0
- package/dist/esm/start-compiler-plugin.js.map +1 -0
- package/dist/esm/start-server-routes-plugin/config.d.ts +49 -0
- package/dist/esm/start-server-routes-plugin/plugin.d.ts +3 -0
- package/dist/esm/start-server-routes-plugin/plugin.js +608 -0
- package/dist/esm/start-server-routes-plugin/plugin.js.map +1 -0
- package/dist/esm/start-server-routes-plugin/template.d.ts +34 -0
- package/dist/esm/start-server-routes-plugin/template.js +111 -0
- package/dist/esm/start-server-routes-plugin/template.js.map +1 -0
- package/package.json +72 -0
- package/src/compilers.ts +759 -0
- package/src/extractHtmlScripts.ts +19 -0
- package/src/index.ts +15 -0
- package/src/nitro/build-nitro.ts +27 -0
- package/src/nitro/build-sitemap.ts +79 -0
- package/src/nitro/dev-server-plugin.ts +159 -0
- package/src/nitro/nitro-plugin.ts +161 -0
- package/src/plugin.ts +145 -0
- package/src/prerender.ts +245 -0
- package/src/queue.ts +153 -0
- package/src/routesManifestPlugin.ts +216 -0
- package/src/schema.ts +193 -0
- package/src/start-compiler-plugin.ts +111 -0
- package/src/start-server-routes-plugin/config.ts +8 -0
- package/src/start-server-routes-plugin/plugin.ts +890 -0
- package/src/start-server-routes-plugin/template.ts +164 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { getConfig, configSchema } from "@tanstack/router-generator";
|
|
5
|
+
const tsrConfig = configSchema.partial().extend({
|
|
6
|
+
srcDirectory: z.string().optional().default("src")
|
|
7
|
+
});
|
|
8
|
+
function createTanStackConfig(frameworkPlugin) {
|
|
9
|
+
const schema = createTanStackStartOptionsSchema(frameworkPlugin);
|
|
10
|
+
return {
|
|
11
|
+
schema,
|
|
12
|
+
parse: (opts) => {
|
|
13
|
+
const options = schema.parse(opts);
|
|
14
|
+
const srcDirectory = options.tsr.srcDirectory;
|
|
15
|
+
const routesDirectory = options.tsr.routesDirectory ?? path.join(srcDirectory, "routes");
|
|
16
|
+
const generatedRouteTree = options.tsr.generatedRouteTree ?? path.join(srcDirectory, "routeTree.gen.ts");
|
|
17
|
+
const clientEntryPath = (() => {
|
|
18
|
+
if (options.client.entry) {
|
|
19
|
+
return path.join(srcDirectory, options.client.entry);
|
|
20
|
+
}
|
|
21
|
+
if (existsSync(path.join(srcDirectory, "client.tsx"))) {
|
|
22
|
+
return path.join(srcDirectory, "client.tsx");
|
|
23
|
+
}
|
|
24
|
+
return "/~start/default-client-entry";
|
|
25
|
+
})();
|
|
26
|
+
const serverEntryPath = (() => {
|
|
27
|
+
if (options.server.entry) {
|
|
28
|
+
return path.join(srcDirectory, options.server.entry);
|
|
29
|
+
}
|
|
30
|
+
if (existsSync(path.join(srcDirectory, "server.tsx"))) {
|
|
31
|
+
return path.join(srcDirectory, "server.tsx");
|
|
32
|
+
}
|
|
33
|
+
return "/~start/default-server-entry";
|
|
34
|
+
})();
|
|
35
|
+
return {
|
|
36
|
+
...options,
|
|
37
|
+
tsr: {
|
|
38
|
+
...options.tsr,
|
|
39
|
+
...getConfig({
|
|
40
|
+
...options.tsr,
|
|
41
|
+
routesDirectory,
|
|
42
|
+
generatedRouteTree
|
|
43
|
+
})
|
|
44
|
+
},
|
|
45
|
+
clientEntryPath,
|
|
46
|
+
serverEntryPath
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function createTanStackStartOptionsSchema(frameworkPlugin = {}) {
|
|
52
|
+
return z.object({
|
|
53
|
+
root: z.string().optional().default(process.cwd()),
|
|
54
|
+
target: z.custom().optional(),
|
|
55
|
+
...frameworkPlugin,
|
|
56
|
+
tsr: tsrConfig.optional().default({}),
|
|
57
|
+
client: z.object({
|
|
58
|
+
entry: z.string().optional(),
|
|
59
|
+
base: z.string().optional().default("/_build")
|
|
60
|
+
}).optional().default({}),
|
|
61
|
+
server: z.object({
|
|
62
|
+
entry: z.string().optional()
|
|
63
|
+
}).optional().default({}),
|
|
64
|
+
serverFns: z.object({
|
|
65
|
+
base: z.string().optional().default("/_server")
|
|
66
|
+
}).optional().default({}),
|
|
67
|
+
public: z.object({
|
|
68
|
+
dir: z.string().optional().default("public"),
|
|
69
|
+
base: z.string().optional().default("/")
|
|
70
|
+
}).optional().default({}),
|
|
71
|
+
pages: z.array(z.union([z.string(), pageSchema])).optional().default([]),
|
|
72
|
+
sitemap: pagePrerenderOptionsSchema.extend({
|
|
73
|
+
host: z.string().optional()
|
|
74
|
+
}).optional(),
|
|
75
|
+
prerender: z.object({
|
|
76
|
+
enabled: z.boolean().optional(),
|
|
77
|
+
concurrency: z.number().optional(),
|
|
78
|
+
filter: z.function().args(pageSchema).returns(z.any()).optional(),
|
|
79
|
+
failOnError: z.boolean().optional()
|
|
80
|
+
}).and(pagePrerenderOptionsSchema.optional()).optional()
|
|
81
|
+
}).optional().default({});
|
|
82
|
+
}
|
|
83
|
+
const pageSitemapOptionsSchema = z.object({
|
|
84
|
+
exclude: z.boolean().optional(),
|
|
85
|
+
priority: z.number().min(0).max(1).optional(),
|
|
86
|
+
changefreq: z.enum(["always", "hourly", "daily", "weekly", "monthly", "yearly", "never"]).optional(),
|
|
87
|
+
lastmod: z.union([z.string(), z.date()]).optional(),
|
|
88
|
+
alternateRefs: z.array(
|
|
89
|
+
z.object({
|
|
90
|
+
href: z.string(),
|
|
91
|
+
hreflang: z.string()
|
|
92
|
+
})
|
|
93
|
+
).optional(),
|
|
94
|
+
images: z.array(
|
|
95
|
+
z.object({
|
|
96
|
+
loc: z.string(),
|
|
97
|
+
caption: z.string().optional(),
|
|
98
|
+
title: z.string().optional()
|
|
99
|
+
})
|
|
100
|
+
).optional(),
|
|
101
|
+
news: z.object({
|
|
102
|
+
publication: z.object({
|
|
103
|
+
name: z.string(),
|
|
104
|
+
language: z.string()
|
|
105
|
+
}),
|
|
106
|
+
publicationDate: z.union([z.string(), z.date()]),
|
|
107
|
+
title: z.string()
|
|
108
|
+
}).optional()
|
|
109
|
+
});
|
|
110
|
+
const pageBaseSchema = z.object({
|
|
111
|
+
path: z.string(),
|
|
112
|
+
sitemap: pageSitemapOptionsSchema.optional(),
|
|
113
|
+
fromCrawl: z.boolean().optional()
|
|
114
|
+
});
|
|
115
|
+
const pagePrerenderOptionsSchema = z.object({
|
|
116
|
+
enabled: z.boolean().optional(),
|
|
117
|
+
autoSubfolderIndex: z.boolean().optional(),
|
|
118
|
+
crawlLinks: z.boolean().optional(),
|
|
119
|
+
retryCount: z.number().optional(),
|
|
120
|
+
retryDelay: z.number().optional(),
|
|
121
|
+
onSuccess: z.function().args(
|
|
122
|
+
z.object({
|
|
123
|
+
page: pageBaseSchema,
|
|
124
|
+
html: z.string()
|
|
125
|
+
})
|
|
126
|
+
).returns(z.any()).optional()
|
|
127
|
+
});
|
|
128
|
+
const pageSchema = pageBaseSchema.extend({
|
|
129
|
+
prerender: pagePrerenderOptionsSchema.optional()
|
|
130
|
+
});
|
|
131
|
+
export {
|
|
132
|
+
createTanStackConfig,
|
|
133
|
+
createTanStackStartOptionsSchema,
|
|
134
|
+
pageSchema
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../src/schema.ts"],"sourcesContent":["import path from 'node:path'\nimport { existsSync } from 'node:fs'\nimport { z } from 'zod'\nimport { configSchema, getConfig } from '@tanstack/router-generator'\nimport type { NitroConfig } from 'nitropack'\n\nconst tsrConfig = configSchema.partial().extend({\n srcDirectory: z.string().optional().default('src'),\n})\n\nexport function createTanStackConfig<\n TFrameworkPlugin extends Record<string, unknown>,\n>(frameworkPlugin?: TFrameworkPlugin) {\n const schema = createTanStackStartOptionsSchema(frameworkPlugin)\n\n return {\n schema,\n parse: (opts?: z.input<typeof schema>) => {\n const options = schema.parse(opts)\n\n const srcDirectory = options.tsr.srcDirectory\n\n const routesDirectory =\n options.tsr.routesDirectory ?? path.join(srcDirectory, 'routes')\n\n const generatedRouteTree =\n options.tsr.generatedRouteTree ??\n path.join(srcDirectory, 'routeTree.gen.ts')\n\n const clientEntryPath = (() => {\n if (options.client.entry) {\n return path.join(srcDirectory, options.client.entry)\n }\n\n if (existsSync(path.join(srcDirectory, 'client.tsx'))) {\n return path.join(srcDirectory, 'client.tsx')\n }\n\n return '/~start/default-client-entry'\n })()\n\n const serverEntryPath = (() => {\n if (options.server.entry) {\n return path.join(srcDirectory, options.server.entry)\n }\n\n if (existsSync(path.join(srcDirectory, 'server.tsx'))) {\n return path.join(srcDirectory, 'server.tsx')\n }\n\n return '/~start/default-server-entry'\n })()\n\n return {\n ...options,\n tsr: {\n ...options.tsr,\n ...getConfig({\n ...options.tsr,\n routesDirectory,\n generatedRouteTree,\n }),\n },\n clientEntryPath,\n serverEntryPath,\n }\n },\n }\n}\n\nexport function createTanStackStartOptionsSchema(\n frameworkPlugin: Record<string, unknown> = {},\n) {\n return z\n .object({\n root: z.string().optional().default(process.cwd()),\n target: z.custom<NitroConfig['preset']>().optional(),\n ...frameworkPlugin,\n tsr: tsrConfig.optional().default({}),\n client: z\n .object({\n entry: z.string().optional(),\n base: z.string().optional().default('/_build'),\n })\n .optional()\n .default({}),\n server: z\n .object({\n entry: z.string().optional(),\n })\n .optional()\n .default({}),\n serverFns: z\n .object({\n base: z.string().optional().default('/_server'),\n })\n .optional()\n .default({}),\n public: z\n .object({\n dir: z.string().optional().default('public'),\n base: z.string().optional().default('/'),\n })\n .optional()\n .default({}),\n pages: z\n .array(z.union([z.string(), pageSchema]))\n .optional()\n .default([]),\n sitemap: pagePrerenderOptionsSchema\n .extend({\n host: z.string().optional(),\n })\n .optional(),\n prerender: z\n .object({\n enabled: z.boolean().optional(),\n concurrency: z.number().optional(),\n filter: z.function().args(pageSchema).returns(z.any()).optional(),\n failOnError: z.boolean().optional(),\n })\n .and(pagePrerenderOptionsSchema.optional())\n .optional(),\n })\n .optional()\n .default({})\n}\n\nconst pageSitemapOptionsSchema = z.object({\n exclude: z.boolean().optional(),\n priority: z.number().min(0).max(1).optional(),\n changefreq: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .optional(),\n lastmod: z.union([z.string(), z.date()]).optional(),\n alternateRefs: z\n .array(\n z.object({\n href: z.string(),\n hreflang: z.string(),\n }),\n )\n .optional(),\n images: z\n .array(\n z.object({\n loc: z.string(),\n caption: z.string().optional(),\n title: z.string().optional(),\n }),\n )\n .optional(),\n news: z\n .object({\n publication: z.object({\n name: z.string(),\n language: z.string(),\n }),\n publicationDate: z.union([z.string(), z.date()]),\n title: z.string(),\n })\n .optional(),\n})\n\nconst pageBaseSchema = z.object({\n path: z.string(),\n sitemap: pageSitemapOptionsSchema.optional(),\n fromCrawl: z.boolean().optional(),\n})\n\nconst pagePrerenderOptionsSchema = z.object({\n enabled: z.boolean().optional(),\n autoSubfolderIndex: z.boolean().optional(),\n crawlLinks: z.boolean().optional(),\n retryCount: z.number().optional(),\n retryDelay: z.number().optional(),\n onSuccess: z\n .function()\n .args(\n z.object({\n page: pageBaseSchema,\n html: z.string(),\n }),\n )\n .returns(z.any())\n .optional(),\n})\n\nexport const pageSchema = pageBaseSchema.extend({\n prerender: pagePrerenderOptionsSchema.optional(),\n})\n\nexport type Page = z.infer<typeof pageSchema>\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Plugin } from 'vite';
|
|
2
|
+
import { CompileStartFrameworkOptions } from './compilers.js';
|
|
3
|
+
export type TanStackStartViteOptions = {
|
|
4
|
+
globalMiddlewareEntry: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function TanStackStartCompilerPlugin(framework: CompileStartFrameworkOptions, inputOpts?: {
|
|
7
|
+
client?: {
|
|
8
|
+
envName?: string;
|
|
9
|
+
};
|
|
10
|
+
server?: {
|
|
11
|
+
envName?: string;
|
|
12
|
+
};
|
|
13
|
+
}): Plugin;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { pathToFileURL, fileURLToPath } from "node:url";
|
|
2
|
+
import { logDiff } from "@tanstack/router-utils";
|
|
3
|
+
import { compileStartOutputFactory } from "./compilers.js";
|
|
4
|
+
const debug = process.env.TSR_VITE_DEBUG && ["true", "start-plugin"].includes(process.env.TSR_VITE_DEBUG);
|
|
5
|
+
const transformFuncs = [
|
|
6
|
+
"createServerFn",
|
|
7
|
+
"createMiddleware",
|
|
8
|
+
"serverOnly",
|
|
9
|
+
"clientOnly",
|
|
10
|
+
"createIsomorphicFn",
|
|
11
|
+
"createServerFileRoute"
|
|
12
|
+
];
|
|
13
|
+
const tokenRegex = new RegExp(transformFuncs.join("|"));
|
|
14
|
+
function TanStackStartCompilerPlugin(framework, inputOpts) {
|
|
15
|
+
const opts = {
|
|
16
|
+
client: {
|
|
17
|
+
envName: "client",
|
|
18
|
+
...inputOpts == null ? void 0 : inputOpts.client
|
|
19
|
+
},
|
|
20
|
+
server: {
|
|
21
|
+
envName: "server",
|
|
22
|
+
...inputOpts == null ? void 0 : inputOpts.server
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
name: "vite-plugin-tanstack-start-create-server-fn",
|
|
27
|
+
enforce: "pre",
|
|
28
|
+
applyToEnvironment(env) {
|
|
29
|
+
return [opts.client.envName, opts.server.envName].includes(env.name);
|
|
30
|
+
},
|
|
31
|
+
transform(code, id) {
|
|
32
|
+
const env = this.environment.name === opts.client.envName ? "client" : this.environment.name === opts.server.envName ? "server" : (() => {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Environment ${this.environment.name} not configured`
|
|
35
|
+
);
|
|
36
|
+
})();
|
|
37
|
+
return transformCode({
|
|
38
|
+
code,
|
|
39
|
+
id,
|
|
40
|
+
env,
|
|
41
|
+
framework
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function transformCode(opts) {
|
|
47
|
+
const { code, env, framework } = opts;
|
|
48
|
+
let { id } = opts;
|
|
49
|
+
const url = pathToFileURL(id);
|
|
50
|
+
url.searchParams.delete("v");
|
|
51
|
+
id = fileURLToPath(url).replace(/\\/g, "/");
|
|
52
|
+
const includesToken = tokenRegex.test(code);
|
|
53
|
+
if (!includesToken) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
if (debug) console.info(`${env} Compiling Start: `, id);
|
|
57
|
+
const compileStartOutput = compileStartOutputFactory(framework);
|
|
58
|
+
const compiled = compileStartOutput({
|
|
59
|
+
code,
|
|
60
|
+
filename: id,
|
|
61
|
+
env
|
|
62
|
+
});
|
|
63
|
+
if (debug) {
|
|
64
|
+
logDiff(code, compiled.code);
|
|
65
|
+
console.log("Output:\n", compiled.code + "\n\n");
|
|
66
|
+
}
|
|
67
|
+
return compiled;
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
TanStackStartCompilerPlugin
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=start-compiler-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-compiler-plugin.js","sources":["../../src/start-compiler-plugin.ts"],"sourcesContent":["import { fileURLToPath, pathToFileURL } from 'node:url'\nimport { logDiff } from '@tanstack/router-utils'\n\nimport { compileStartOutputFactory } from './compilers'\nimport type { Plugin } from 'vite'\nimport type { CompileStartFrameworkOptions } from './compilers'\n\nconst debug =\n process.env.TSR_VITE_DEBUG &&\n ['true', 'start-plugin'].includes(process.env.TSR_VITE_DEBUG)\n\nexport type TanStackStartViteOptions = {\n globalMiddlewareEntry: string\n}\n\nconst transformFuncs = [\n 'createServerFn',\n 'createMiddleware',\n 'serverOnly',\n 'clientOnly',\n 'createIsomorphicFn',\n 'createServerFileRoute',\n]\n\nconst tokenRegex = new RegExp(transformFuncs.join('|'))\n\nexport function TanStackStartCompilerPlugin(\n framework: CompileStartFrameworkOptions,\n inputOpts?: {\n client?: {\n envName?: string\n }\n server?: {\n envName?: string\n }\n },\n): Plugin {\n const opts = {\n client: {\n envName: 'client',\n ...inputOpts?.client,\n },\n server: {\n envName: 'server',\n ...inputOpts?.server,\n },\n }\n\n return {\n name: 'vite-plugin-tanstack-start-create-server-fn',\n enforce: 'pre',\n applyToEnvironment(env) {\n return [opts.client.envName, opts.server.envName].includes(env.name)\n },\n transform(code, id) {\n const env =\n this.environment.name === opts.client.envName\n ? 'client'\n : this.environment.name === opts.server.envName\n ? 'server'\n : (() => {\n throw new Error(\n `Environment ${this.environment.name} not configured`,\n )\n })()\n\n return transformCode({\n code,\n id,\n env,\n framework,\n })\n },\n }\n}\n\nfunction transformCode(opts: {\n code: string\n id: string\n env: 'server' | 'client'\n framework: CompileStartFrameworkOptions\n}) {\n const { code, env, framework } = opts\n let { id } = opts\n\n const url = pathToFileURL(id)\n url.searchParams.delete('v')\n id = fileURLToPath(url).replace(/\\\\/g, '/')\n\n const includesToken = tokenRegex.test(code)\n\n if (!includesToken) {\n return null\n }\n\n if (debug) console.info(`${env} Compiling Start: `, id)\n\n const compileStartOutput = compileStartOutputFactory(framework)\n const compiled = compileStartOutput({\n code,\n filename: id,\n env,\n })\n\n if (debug) {\n logDiff(code, compiled.code)\n console.log('Output:\\n', compiled.code + '\\n\\n')\n }\n\n return compiled\n}\n"],"names":[],"mappings":";;;AAOA,MAAM,QACJ,QAAQ,IAAI,kBACZ,CAAC,QAAQ,cAAc,EAAE,SAAS,QAAQ,IAAI,cAAc;AAM9D,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,aAAa,IAAI,OAAO,eAAe,KAAK,GAAG,CAAC;AAEtC,SAAA,4BACd,WACA,WAQQ;AACR,QAAM,OAAO;AAAA,IACX,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,GAAG,uCAAW;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,GAAG,uCAAW;AAAA,IAAA;AAAA,EAElB;AAEO,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,mBAAmB,KAAK;AACf,aAAA,CAAC,KAAK,OAAO,SAAS,KAAK,OAAO,OAAO,EAAE,SAAS,IAAI,IAAI;AAAA,IACrE;AAAA,IACA,UAAU,MAAM,IAAI;AAClB,YAAM,MACJ,KAAK,YAAY,SAAS,KAAK,OAAO,UAClC,WACA,KAAK,YAAY,SAAS,KAAK,OAAO,UACpC,YACC,MAAM;AACL,cAAM,IAAI;AAAA,UACR,eAAe,KAAK,YAAY,IAAI;AAAA,QACtC;AAAA,MAAA,GACC;AAEX,aAAO,cAAc;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AACF;AAEA,SAAS,cAAc,MAKpB;AACD,QAAM,EAAE,MAAM,KAAK,UAAc,IAAA;AAC7B,MAAA,EAAE,OAAO;AAEP,QAAA,MAAM,cAAc,EAAE;AACxB,MAAA,aAAa,OAAO,GAAG;AAC3B,OAAK,cAAc,GAAG,EAAE,QAAQ,OAAO,GAAG;AAEpC,QAAA,gBAAgB,WAAW,KAAK,IAAI;AAE1C,MAAI,CAAC,eAAe;AACX,WAAA;AAAA,EAAA;AAGT,MAAI,MAAe,SAAA,KAAK,GAAG,GAAG,sBAAsB,EAAE;AAEhD,QAAA,qBAAqB,0BAA0B,SAAS;AAC9D,QAAM,WAAW,mBAAmB;AAAA,IAClC;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,CACD;AAED,MAAI,OAAO;AACD,YAAA,MAAM,SAAS,IAAI;AAC3B,YAAQ,IAAI,aAAa,SAAS,OAAO,MAAM;AAAA,EAAA;AAG1C,SAAA;AACT;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const configSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
3
|
+
target: z.ZodDefault<z.ZodOptional<z.ZodEnum<["react", "solid"]>>>;
|
|
4
|
+
virtualRouteConfig: z.ZodOptional<z.ZodUnion<[z.ZodType<import('@tanstack/virtual-file-routes').VirtualRootRoute, z.ZodTypeDef, import('@tanstack/virtual-file-routes').VirtualRootRoute>, z.ZodString]>>;
|
|
5
|
+
routeFilePrefix: z.ZodOptional<z.ZodString>;
|
|
6
|
+
routeFileIgnorePrefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
7
|
+
routeFileIgnorePattern: z.ZodOptional<z.ZodString>;
|
|
8
|
+
routesDirectory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
9
|
+
quoteStyle: z.ZodDefault<z.ZodOptional<z.ZodEnum<["single", "double"]>>>;
|
|
10
|
+
semicolons: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
11
|
+
disableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
12
|
+
routeTreeFileHeader: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
13
|
+
indexToken: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
14
|
+
routeToken: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
15
|
+
pathParamsAllowedCharacters: z.ZodOptional<z.ZodArray<z.ZodEnum<[";", ":", "@", "&", "=", "+", "$", ","]>, "many">>;
|
|
16
|
+
}, {
|
|
17
|
+
srcDirectory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
18
|
+
}>, "strip", z.ZodTypeAny, {
|
|
19
|
+
target: "react" | "solid";
|
|
20
|
+
routeFileIgnorePrefix: string;
|
|
21
|
+
routesDirectory: string;
|
|
22
|
+
quoteStyle: "single" | "double";
|
|
23
|
+
semicolons: boolean;
|
|
24
|
+
disableLogging: boolean;
|
|
25
|
+
routeTreeFileHeader: string[];
|
|
26
|
+
indexToken: string;
|
|
27
|
+
routeToken: string;
|
|
28
|
+
srcDirectory: string;
|
|
29
|
+
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
30
|
+
routeFilePrefix?: string | undefined;
|
|
31
|
+
routeFileIgnorePattern?: string | undefined;
|
|
32
|
+
pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
target?: "react" | "solid" | undefined;
|
|
35
|
+
virtualRouteConfig?: string | import('@tanstack/virtual-file-routes').VirtualRootRoute | undefined;
|
|
36
|
+
routeFilePrefix?: string | undefined;
|
|
37
|
+
routeFileIgnorePrefix?: string | undefined;
|
|
38
|
+
routeFileIgnorePattern?: string | undefined;
|
|
39
|
+
routesDirectory?: string | undefined;
|
|
40
|
+
quoteStyle?: "single" | "double" | undefined;
|
|
41
|
+
semicolons?: boolean | undefined;
|
|
42
|
+
disableLogging?: boolean | undefined;
|
|
43
|
+
routeTreeFileHeader?: string[] | undefined;
|
|
44
|
+
indexToken?: string | undefined;
|
|
45
|
+
routeToken?: string | undefined;
|
|
46
|
+
pathParamsAllowedCharacters?: (";" | ":" | "@" | "&" | "=" | "+" | "$" | ",")[] | undefined;
|
|
47
|
+
srcDirectory?: string | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
export type Config = z.infer<typeof configSchema>;
|