create-payload-app 4.0.0-internal.293e026 → 4.0.0-internal.2a3c3bc
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.md +1 -1
- package/README.md +5 -0
- package/dist/commands.d.ts +4 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +5 -0
- package/dist/commands.js.map +1 -0
- package/dist/lib/agent-config.d.ts +12 -0
- package/dist/lib/agent-config.d.ts.map +1 -0
- package/dist/lib/agent-config.js +15 -0
- package/dist/lib/agent-config.js.map +1 -0
- package/dist/lib/ast/adapter-config.d.ts.map +1 -1
- package/dist/lib/ast/adapter-config.js +0 -10
- package/dist/lib/ast/adapter-config.js.map +1 -1
- package/dist/lib/ast/package-json.d.ts +9 -0
- package/dist/lib/ast/package-json.d.ts.map +1 -1
- package/dist/lib/ast/package-json.js +34 -8
- package/dist/lib/ast/package-json.js.map +1 -1
- package/dist/lib/ast/types.d.ts +2 -2
- package/dist/lib/ast/types.d.ts.map +1 -1
- package/dist/lib/ast/types.js +0 -1
- package/dist/lib/ast/types.js.map +1 -1
- package/dist/lib/configure-payload-tsconfig.d.ts +5 -0
- package/dist/lib/configure-payload-tsconfig.d.ts.map +1 -0
- package/dist/lib/configure-payload-tsconfig.js +26 -0
- package/dist/lib/configure-payload-tsconfig.js.map +1 -0
- package/dist/lib/configure-plugin-project.d.ts.map +1 -1
- package/dist/lib/configure-pnpm-builds.d.ts +20 -0
- package/dist/lib/configure-pnpm-builds.d.ts.map +1 -0
- package/dist/lib/configure-pnpm-builds.js +100 -0
- package/dist/lib/configure-pnpm-builds.js.map +1 -0
- package/dist/lib/create-project.d.ts +1 -2
- package/dist/lib/create-project.d.ts.map +1 -1
- package/dist/lib/create-project.js +64 -32
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/generate-secret.js +1 -1
- package/dist/lib/generate-secret.js.map +1 -1
- package/dist/lib/get-package-manager.d.ts +9 -0
- package/dist/lib/get-package-manager.d.ts.map +1 -1
- package/dist/lib/get-package-manager.js +20 -0
- package/dist/lib/get-package-manager.js.map +1 -1
- package/dist/lib/init-next.d.ts +6 -1
- package/dist/lib/init-next.d.ts.map +1 -1
- package/dist/lib/init-next.js +26 -39
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/init-tanstack.d.ts +18 -0
- package/dist/lib/init-tanstack.d.ts.map +1 -0
- package/dist/lib/init-tanstack.js +149 -0
- package/dist/lib/init-tanstack.js.map +1 -0
- package/dist/lib/tanstack/detect.d.ts +5 -0
- package/dist/lib/tanstack/detect.d.ts.map +1 -0
- package/dist/lib/tanstack/detect.js +131 -0
- package/dist/lib/tanstack/detect.js.map +1 -0
- package/dist/lib/tanstack/prepare.d.ts +23 -0
- package/dist/lib/tanstack/prepare.d.ts.map +1 -0
- package/dist/lib/tanstack/prepare.js +114 -0
- package/dist/lib/tanstack/prepare.js.map +1 -0
- package/dist/lib/tanstack/template-files.d.ts +50 -0
- package/dist/lib/tanstack/template-files.d.ts.map +1 -0
- package/dist/lib/tanstack/template-files.js +64 -0
- package/dist/lib/tanstack/template-files.js.map +1 -0
- package/dist/lib/tanstack/transform-root-route.d.ts +7 -0
- package/dist/lib/tanstack/transform-root-route.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-root-route.js +747 -0
- package/dist/lib/tanstack/transform-root-route.js.map +1 -0
- package/dist/lib/tanstack/transform-router.d.ts +5 -0
- package/dist/lib/tanstack/transform-router.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-router.js +301 -0
- package/dist/lib/tanstack/transform-router.js.map +1 -0
- package/dist/lib/tanstack/transform-vite-config.d.ts +14 -0
- package/dist/lib/tanstack/transform-vite-config.d.ts.map +1 -0
- package/dist/lib/tanstack/transform-vite-config.js +576 -0
- package/dist/lib/tanstack/transform-vite-config.js.map +1 -0
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +6 -0
- package/dist/lib/templates.js.map +1 -1
- package/dist/lib/update-payload-in-project.d.ts +18 -3
- package/dist/lib/update-payload-in-project.d.ts.map +1 -1
- package/dist/lib/update-payload-in-project.js +98 -18
- package/dist/lib/update-payload-in-project.js.map +1 -1
- package/dist/lib/wrap-next-config.d.ts.map +1 -1
- package/dist/main.d.ts +20 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +124 -34
- package/dist/main.js.map +1 -1
- package/dist/scripts/pack-template-files.js +18 -0
- package/dist/scripts/pack-template-files.js.map +1 -1
- package/dist/template/src/app/(frontend)/styles.css +8 -1
- package/dist/template/src/app/(payload)/admin/[[...segments]]/not-found.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/[[...segments]]/page.tsx +1 -2
- package/dist/template/src/app/(payload)/admin/importMap.js +15 -2
- package/dist/template/src/app/(payload)/api/[...slug]/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql/route.ts +1 -2
- package/dist/template/src/app/(payload)/api/graphql-playground/route.ts +1 -2
- package/dist/template/src/app/(payload)/custom.css +0 -0
- package/dist/template/src/app/(payload)/layout.tsx +9 -4
- package/dist/template/src/payload-types.ts +10 -116
- package/dist/template/src/payload.config.ts +5 -3
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +25 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +25 -0
- package/dist/template-tanstack/routes/_payload/api.$.ts +11 -0
- package/dist/template-tanstack/routes/_payload/importMap.js +32 -0
- package/dist/template-tanstack/routes/_payload/server.functions.ts +50 -0
- package/dist/template-tanstack/routes/_payload.tsx +29 -0
- package/dist/template-tanstack/src/collections/Folders.ts +16 -0
- package/dist/template-tanstack/src/collections/Media.ts +20 -0
- package/dist/template-tanstack/src/collections/Tags.ts +16 -0
- package/dist/template-tanstack/src/collections/Users.ts +14 -0
- package/dist/template-tanstack/src/payload.config.ts +38 -0
- package/dist/types.d.ts +23 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/casing.d.ts.map +1 -1
- package/dist/utils/log.d.ts.map +1 -1
- package/dist/utils/messages.d.ts +1 -0
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +10 -7
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/resolvePackageVersion.d.ts +13 -2
- package/dist/utils/resolvePackageVersion.d.ts.map +1 -1
- package/dist/utils/resolvePackageVersion.js +26 -1
- package/dist/utils/resolvePackageVersion.js.map +1 -1
- package/package.json +7 -7
- package/dist/ast-integration.spec.js +0 -132
- package/dist/ast-integration.spec.js.map +0 -1
- package/dist/lib/ast/package-json.spec.js +0 -67
- package/dist/lib/ast/package-json.spec.js.map +0 -1
- package/dist/lib/ast/payload-config.spec.js +0 -365
- package/dist/lib/ast/payload-config.spec.js.map +0 -1
- package/dist/lib/ast/utils.spec.js +0 -226
- package/dist/lib/ast/utils.spec.js.map +0 -1
- package/dist/lib/create-project.spec.js +0 -190
- package/dist/lib/create-project.spec.js.map +0 -1
- package/dist/lib/download-skill.d.ts +0 -8
- package/dist/lib/download-skill.d.ts.map +0 -1
- package/dist/lib/download-skill.js +0 -35
- package/dist/lib/download-skill.js.map +0 -1
- package/dist/lib/manage-env-files.spec.js +0 -118
- package/dist/lib/manage-env-files.spec.js.map +0 -1
- package/dist/lib/select-agent.d.ts +0 -16
- package/dist/lib/select-agent.d.ts.map +0 -1
- package/dist/lib/select-agent.js +0 -67
- package/dist/lib/select-agent.js.map +0 -1
- package/dist/lib/wrap-next-config.spec.js +0 -167
- package/dist/lib/wrap-next-config.spec.js.map +0 -1
- package/dist/utils/resolvePackageVersion.spec.js +0 -72
- package/dist/utils/resolvePackageVersion.spec.js.map +0 -1
- /package/dist/{template/src/app/(payload)/custom.scss → template-tanstack/routes/_payload/custom.css} +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { debug } from '../utils/log.js';
|
|
4
|
+
import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from '../utils/resolvePackageVersion.js';
|
|
5
|
+
import { getDbPackageName } from './ast/adapter-config.js';
|
|
6
|
+
import { preparePackageJson } from './ast/package-json.js';
|
|
7
|
+
import { configurePayloadTsConfig } from './configure-payload-tsconfig.js';
|
|
8
|
+
import { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js';
|
|
9
|
+
import { installPackages } from './install-packages.js';
|
|
10
|
+
import { getTanStackAppDetails } from './tanstack/detect.js';
|
|
11
|
+
import { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js';
|
|
12
|
+
const filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const dirname = path.dirname(filename);
|
|
14
|
+
export async function initTanStack(args) {
|
|
15
|
+
const appDetailsResult = args.appDetails ? {
|
|
16
|
+
details: args.appDetails,
|
|
17
|
+
success: true
|
|
18
|
+
} : await detectAppDetails({
|
|
19
|
+
projectDir: args.projectDir
|
|
20
|
+
});
|
|
21
|
+
if (!appDetailsResult.success) {
|
|
22
|
+
return appDetailsResult;
|
|
23
|
+
}
|
|
24
|
+
const { details: appDetails } = appDetailsResult;
|
|
25
|
+
const templateRoot = args.templateRoot ?? resolveTemplateRoot();
|
|
26
|
+
if (args['--debug']) {
|
|
27
|
+
debug(`Using TanStack template files from: ${templateRoot}`);
|
|
28
|
+
}
|
|
29
|
+
const prepared = await prepareTanStackInit({
|
|
30
|
+
appDetails,
|
|
31
|
+
templateRoot
|
|
32
|
+
});
|
|
33
|
+
if (!prepared.success) {
|
|
34
|
+
return prepared;
|
|
35
|
+
}
|
|
36
|
+
const payloadVersion = await resolvePackageVersion({
|
|
37
|
+
debug: args['--debug'],
|
|
38
|
+
packageName: 'payload',
|
|
39
|
+
versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG
|
|
40
|
+
});
|
|
41
|
+
const requiredDependencies = getRequiredDependencies({
|
|
42
|
+
appDetails,
|
|
43
|
+
dbType: args.dbType,
|
|
44
|
+
payloadVersion
|
|
45
|
+
});
|
|
46
|
+
let writes = prepared.writes;
|
|
47
|
+
if (appDetails.kind === 'router-only' || args['--no-deps']) {
|
|
48
|
+
try {
|
|
49
|
+
const packageJsonWrite = preparePackageJson({
|
|
50
|
+
filePath: path.join(args.projectDir, 'package.json'),
|
|
51
|
+
options: {
|
|
52
|
+
addDependencies: args['--no-deps'] ? requiredDependencies : undefined,
|
|
53
|
+
removeDependencies: appDetails.kind === 'router-only' ? [
|
|
54
|
+
'@tanstack/router-plugin'
|
|
55
|
+
] : undefined
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
writes = [
|
|
59
|
+
...writes,
|
|
60
|
+
packageJsonWrite
|
|
61
|
+
];
|
|
62
|
+
} catch (error) {
|
|
63
|
+
return {
|
|
64
|
+
reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
65
|
+
success: false
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
await applyPreparedWrites({
|
|
70
|
+
writes
|
|
71
|
+
});
|
|
72
|
+
if (!args['--no-deps']) {
|
|
73
|
+
const packagesToInstall = Object.entries(requiredDependencies).map(([packageName, version])=>`${packageName}@${version}`);
|
|
74
|
+
await ensurePnpmBuildApprovals({
|
|
75
|
+
packageManager: args.packageManager,
|
|
76
|
+
projectDir: args.projectDir
|
|
77
|
+
});
|
|
78
|
+
let installation;
|
|
79
|
+
try {
|
|
80
|
+
installation = await installPackages({
|
|
81
|
+
packageManager: args.packageManager,
|
|
82
|
+
packagesToInstall,
|
|
83
|
+
projectDir: args.projectDir
|
|
84
|
+
});
|
|
85
|
+
} catch {
|
|
86
|
+
return {
|
|
87
|
+
reason: 'Failed to install dependencies',
|
|
88
|
+
success: false
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (!installation.success) {
|
|
92
|
+
return {
|
|
93
|
+
reason: 'Failed to install dependencies',
|
|
94
|
+
success: false
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts');
|
|
99
|
+
await configurePayloadTsConfig({
|
|
100
|
+
configPath: path.join(args.projectDir, 'tsconfig.json'),
|
|
101
|
+
payloadConfigPath
|
|
102
|
+
});
|
|
103
|
+
return {
|
|
104
|
+
payloadConfigPath,
|
|
105
|
+
success: true
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
async function detectAppDetails({ projectDir }) {
|
|
109
|
+
const detection = await getTanStackAppDetails({
|
|
110
|
+
projectDir
|
|
111
|
+
});
|
|
112
|
+
if (!detection.detected) {
|
|
113
|
+
return {
|
|
114
|
+
reason: `Could not detect a TanStack application in ${projectDir}.`,
|
|
115
|
+
success: false
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (!detection.compatible) {
|
|
119
|
+
return {
|
|
120
|
+
reason: detection.reason,
|
|
121
|
+
success: false
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
details: detection.details,
|
|
126
|
+
success: true
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function getRequiredDependencies({ appDetails, dbType, payloadVersion }) {
|
|
130
|
+
const dependencies = {
|
|
131
|
+
'@payloadcms/plugin-mcp': payloadVersion,
|
|
132
|
+
'@payloadcms/richtext-lexical': payloadVersion,
|
|
133
|
+
'@payloadcms/tanstack-start': payloadVersion,
|
|
134
|
+
'@payloadcms/ui': payloadVersion,
|
|
135
|
+
'@vitejs/plugin-rsc': '^0.5.21',
|
|
136
|
+
[getDbPackageName(dbType)]: payloadVersion,
|
|
137
|
+
graphql: '^16.8.1',
|
|
138
|
+
payload: payloadVersion
|
|
139
|
+
};
|
|
140
|
+
if (appDetails.kind === 'router-only') {
|
|
141
|
+
dependencies['@tanstack/react-start'] = '^1.169.1';
|
|
142
|
+
}
|
|
143
|
+
return dependencies;
|
|
144
|
+
}
|
|
145
|
+
function resolveTemplateRoot() {
|
|
146
|
+
return path.basename(path.dirname(dirname)) === 'dist' ? path.resolve(dirname, '../template-tanstack') : path.resolve(dirname, '../../../../templates/blank-tanstack/src');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=init-tanstack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/init-tanstack.ts"],"sourcesContent":["import path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager, TanStackAppDetails } from '../types.js'\n\nimport { debug } from '../utils/log.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from '../utils/resolvePackageVersion.js'\nimport { getDbPackageName } from './ast/adapter-config.js'\nimport { preparePackageJson } from './ast/package-json.js'\nimport { configurePayloadTsConfig } from './configure-payload-tsconfig.js'\nimport { ensurePnpmBuildApprovals } from './configure-pnpm-builds.js'\nimport { installPackages } from './install-packages.js'\nimport { getTanStackAppDetails } from './tanstack/detect.js'\nimport { applyPreparedWrites, prepareTanStackInit } from './tanstack/prepare.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\ntype InitTanStackArgs = {\n appDetails?: TanStackAppDetails\n dbType: DbType\n packageManager: PackageManager\n projectDir: string\n templateRoot?: string\n} & Pick<CliArgs, '--debug' | '--no-deps' | '--payload-version'>\n\ntype InitTanStackResult =\n | { payloadConfigPath: string; success: true }\n | { reason: string; success: false }\n\nexport async function initTanStack(args: InitTanStackArgs): Promise<InitTanStackResult> {\n const appDetailsResult = args.appDetails\n ? { details: args.appDetails, success: true as const }\n : await detectAppDetails({ projectDir: args.projectDir })\n\n if (!appDetailsResult.success) {\n return appDetailsResult\n }\n\n const { details: appDetails } = appDetailsResult\n const templateRoot = args.templateRoot ?? resolveTemplateRoot()\n\n if (args['--debug']) {\n debug(`Using TanStack template files from: ${templateRoot}`)\n }\n\n const prepared = await prepareTanStackInit({ appDetails, templateRoot })\n if (!prepared.success) {\n return prepared\n }\n\n const payloadVersion = await resolvePackageVersion({\n debug: args['--debug'],\n packageName: 'payload',\n versionOrTag: args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n const requiredDependencies = getRequiredDependencies({\n appDetails,\n dbType: args.dbType,\n payloadVersion,\n })\n let writes = prepared.writes\n if (appDetails.kind === 'router-only' || args['--no-deps']) {\n try {\n const packageJsonWrite = preparePackageJson({\n filePath: path.join(args.projectDir, 'package.json'),\n options: {\n addDependencies: args['--no-deps'] ? requiredDependencies : undefined,\n removeDependencies:\n appDetails.kind === 'router-only' ? ['@tanstack/router-plugin'] : undefined,\n },\n })\n writes = [...writes, packageJsonWrite]\n } catch (error) {\n return {\n reason: `Could not prepare package.json: ${error instanceof Error ? error.message : 'Unknown error'}`,\n success: false,\n }\n }\n }\n\n await applyPreparedWrites({ writes })\n\n if (!args['--no-deps']) {\n const packagesToInstall = Object.entries(requiredDependencies).map(\n ([packageName, version]) => `${packageName}@${version}`,\n )\n\n await ensurePnpmBuildApprovals({\n packageManager: args.packageManager,\n projectDir: args.projectDir,\n })\n\n let installation: { success: boolean }\n try {\n installation = await installPackages({\n packageManager: args.packageManager,\n packagesToInstall,\n projectDir: args.projectDir,\n })\n } catch {\n return { reason: 'Failed to install dependencies', success: false }\n }\n if (!installation.success) {\n return { reason: 'Failed to install dependencies', success: false }\n }\n }\n\n const payloadConfigPath = path.join(appDetails.sourceDir, 'payload.config.ts')\n await configurePayloadTsConfig({\n configPath: path.join(args.projectDir, 'tsconfig.json'),\n payloadConfigPath,\n })\n\n return { payloadConfigPath, success: true }\n}\n\nasync function detectAppDetails({\n projectDir,\n}: {\n projectDir: string\n}): Promise<{ details: TanStackAppDetails; success: true } | { reason: string; success: false }> {\n const detection = await getTanStackAppDetails({ projectDir })\n\n if (!detection.detected) {\n return {\n reason: `Could not detect a TanStack application in ${projectDir}.`,\n success: false,\n }\n }\n\n if (!detection.compatible) {\n return { reason: detection.reason, success: false }\n }\n\n return { details: detection.details, success: true }\n}\n\nfunction getRequiredDependencies({\n appDetails,\n dbType,\n payloadVersion,\n}: {\n appDetails: TanStackAppDetails\n dbType: DbType\n payloadVersion: string\n}): Record<string, string> {\n const dependencies: Record<string, string> = {\n '@payloadcms/plugin-mcp': payloadVersion,\n '@payloadcms/richtext-lexical': payloadVersion,\n '@payloadcms/tanstack-start': payloadVersion,\n '@payloadcms/ui': payloadVersion,\n '@vitejs/plugin-rsc': '^0.5.21',\n [getDbPackageName(dbType)]: payloadVersion,\n graphql: '^16.8.1',\n payload: payloadVersion,\n }\n\n if (appDetails.kind === 'router-only') {\n dependencies['@tanstack/react-start'] = '^1.169.1'\n }\n\n return dependencies\n}\n\nfunction resolveTemplateRoot(): string {\n return path.basename(path.dirname(dirname)) === 'dist'\n ? path.resolve(dirname, '../template-tanstack')\n : path.resolve(dirname, '../../../../templates/blank-tanstack/src')\n}\n"],"names":["path","fileURLToPath","debug","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","getDbPackageName","preparePackageJson","configurePayloadTsConfig","ensurePnpmBuildApprovals","installPackages","getTanStackAppDetails","applyPreparedWrites","prepareTanStackInit","filename","url","dirname","initTanStack","args","appDetailsResult","appDetails","details","success","detectAppDetails","projectDir","templateRoot","resolveTemplateRoot","prepared","payloadVersion","packageName","versionOrTag","requiredDependencies","getRequiredDependencies","dbType","writes","kind","packageJsonWrite","filePath","join","options","addDependencies","undefined","removeDependencies","error","reason","Error","message","packagesToInstall","Object","entries","map","version","packageManager","installation","payloadConfigPath","sourceDir","configPath","detection","detected","compatible","dependencies","graphql","payload","basename","resolve"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/detect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuC,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AASlG,wBAAsB,qBAAqB,CAAC,EAC1C,UAAU,GACX,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8GnC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import fse from 'fs-extra';
|
|
2
|
+
import globby from 'globby';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
const FILE_EXTENSIONS = 'js|jsx|ts|tsx|cjs|cts|mjs|mts';
|
|
5
|
+
export async function getTanStackAppDetails({ projectDir }) {
|
|
6
|
+
const absoluteProjectDir = path.resolve(projectDir);
|
|
7
|
+
const packageJson = await getPackageJson({
|
|
8
|
+
projectDir: absoluteProjectDir
|
|
9
|
+
});
|
|
10
|
+
const packages = {
|
|
11
|
+
...packageJson.dependencies,
|
|
12
|
+
...packageJson.devDependencies
|
|
13
|
+
};
|
|
14
|
+
const isSolidHost = Boolean(packages['@tanstack/solid-router'] || packages['@tanstack/solid-start']);
|
|
15
|
+
const hasReactRouter = Boolean(packages['@tanstack/react-router']);
|
|
16
|
+
const hasReactStart = Boolean(packages['@tanstack/react-start']);
|
|
17
|
+
const hasRouterPlugin = Boolean(packages['@tanstack/router-plugin']);
|
|
18
|
+
if (!isSolidHost && !hasReactRouter && !hasReactStart && !hasRouterPlugin) {
|
|
19
|
+
return {
|
|
20
|
+
detected: false
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (isSolidHost) {
|
|
24
|
+
return incompatible('TanStack Solid projects are not supported.');
|
|
25
|
+
}
|
|
26
|
+
if (hasReactStart && packages.next) {
|
|
27
|
+
return incompatible('TanStack Start and Next.js markers are both present.');
|
|
28
|
+
}
|
|
29
|
+
if (!hasReactRouter) {
|
|
30
|
+
return incompatible('Could not find @tanstack/react-router.');
|
|
31
|
+
}
|
|
32
|
+
const kind = hasReactStart ? 'start' : 'router-only';
|
|
33
|
+
const viteConfigPaths = await findFiles({
|
|
34
|
+
cwd: absoluteProjectDir,
|
|
35
|
+
pattern: `vite.config.@(${FILE_EXTENSIONS})`
|
|
36
|
+
});
|
|
37
|
+
if (viteConfigPaths.length > 1) {
|
|
38
|
+
return incompatible(getAmbiguousFilesReason({
|
|
39
|
+
filePaths: viteConfigPaths,
|
|
40
|
+
projectDir: absoluteProjectDir,
|
|
41
|
+
role: 'Vite config'
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
const viteConfigPath = viteConfigPaths[0];
|
|
45
|
+
if (!viteConfigPath) {
|
|
46
|
+
return incompatible('Could not find a Vite config file.');
|
|
47
|
+
}
|
|
48
|
+
const viteConfig = await fse.readFile(viteConfigPath, 'utf8');
|
|
49
|
+
const pluginName = kind === 'start' ? 'tanstackStart' : 'tanstackRouter';
|
|
50
|
+
if (!new RegExp(`\\b${pluginName}\\s*\\(`).test(viteConfig)) {
|
|
51
|
+
return incompatible(`Could not find ${pluginName}() in ${viteConfigPath}.`);
|
|
52
|
+
}
|
|
53
|
+
const sourceDir = path.join(absoluteProjectDir, 'src');
|
|
54
|
+
const routesDir = path.join(sourceDir, 'routes');
|
|
55
|
+
const routerPaths = await findFiles({
|
|
56
|
+
cwd: sourceDir,
|
|
57
|
+
pattern: `router.@(${FILE_EXTENSIONS})`
|
|
58
|
+
});
|
|
59
|
+
if (routerPaths.length > 1) {
|
|
60
|
+
return incompatible(getAmbiguousFilesReason({
|
|
61
|
+
filePaths: routerPaths,
|
|
62
|
+
projectDir: absoluteProjectDir,
|
|
63
|
+
role: 'router'
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
const routerPath = routerPaths[0];
|
|
67
|
+
if (!routerPath) {
|
|
68
|
+
return incompatible(`Could not find src/router.* in ${absoluteProjectDir}.`);
|
|
69
|
+
}
|
|
70
|
+
const router = await fse.readFile(routerPath, 'utf8');
|
|
71
|
+
if (!/\bgetRouter\b/.test(router)) {
|
|
72
|
+
return incompatible(`Could not find getRouter in ${routerPath}.`);
|
|
73
|
+
}
|
|
74
|
+
const rootRoutePaths = await findFiles({
|
|
75
|
+
cwd: routesDir,
|
|
76
|
+
pattern: `__root.@(${FILE_EXTENSIONS})`
|
|
77
|
+
});
|
|
78
|
+
if (rootRoutePaths.length > 1) {
|
|
79
|
+
return incompatible(getAmbiguousFilesReason({
|
|
80
|
+
filePaths: rootRoutePaths,
|
|
81
|
+
projectDir: absoluteProjectDir,
|
|
82
|
+
role: 'root route'
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
const rootRoutePath = rootRoutePaths[0];
|
|
86
|
+
if (!rootRoutePath) {
|
|
87
|
+
return incompatible(`Could not find src/routes/__root.* in ${absoluteProjectDir}.`);
|
|
88
|
+
}
|
|
89
|
+
const details = {
|
|
90
|
+
isPayloadInstalled: Boolean(packages.payload),
|
|
91
|
+
kind,
|
|
92
|
+
projectDir: absoluteProjectDir,
|
|
93
|
+
rootRoutePath,
|
|
94
|
+
routerPath,
|
|
95
|
+
routesDir,
|
|
96
|
+
sourceDir,
|
|
97
|
+
viteConfigPath
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
compatible: true,
|
|
101
|
+
details,
|
|
102
|
+
detected: true
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function incompatible(reason) {
|
|
106
|
+
return {
|
|
107
|
+
compatible: false,
|
|
108
|
+
detected: true,
|
|
109
|
+
reason
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function getAmbiguousFilesReason({ filePaths, projectDir, role }) {
|
|
113
|
+
const relativePaths = filePaths.map((filePath)=>path.relative(projectDir, filePath)).sort();
|
|
114
|
+
return `Found multiple supported ${role} files: ${relativePaths.join(', ')}.`;
|
|
115
|
+
}
|
|
116
|
+
async function findFiles({ cwd, pattern }) {
|
|
117
|
+
return globby(pattern, {
|
|
118
|
+
absolute: true,
|
|
119
|
+
cwd,
|
|
120
|
+
onlyFiles: true
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
async function getPackageJson({ projectDir }) {
|
|
124
|
+
const packageJsonPath = path.join(projectDir, 'package.json');
|
|
125
|
+
if (!await fse.pathExists(packageJsonPath)) {
|
|
126
|
+
return {};
|
|
127
|
+
}
|
|
128
|
+
return fse.readJson(packageJsonPath);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/tanstack/detect.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport globby from 'globby'\nimport path from 'path'\n\nimport type { TanStackAppDetails, TanStackAppKind, TanStackDetectionResult } from '../../types.js'\n\ntype PackageJson = {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n}\n\nconst FILE_EXTENSIONS = 'js|jsx|ts|tsx|cjs|cts|mjs|mts'\n\nexport async function getTanStackAppDetails({\n projectDir,\n}: {\n projectDir: string\n}): Promise<TanStackDetectionResult> {\n const absoluteProjectDir = path.resolve(projectDir)\n const packageJson = await getPackageJson({ projectDir: absoluteProjectDir })\n const packages = { ...packageJson.dependencies, ...packageJson.devDependencies }\n const isSolidHost = Boolean(\n packages['@tanstack/solid-router'] || packages['@tanstack/solid-start'],\n )\n const hasReactRouter = Boolean(packages['@tanstack/react-router'])\n const hasReactStart = Boolean(packages['@tanstack/react-start'])\n const hasRouterPlugin = Boolean(packages['@tanstack/router-plugin'])\n\n if (!isSolidHost && !hasReactRouter && !hasReactStart && !hasRouterPlugin) {\n return { detected: false }\n }\n\n if (isSolidHost) {\n return incompatible('TanStack Solid projects are not supported.')\n }\n\n if (hasReactStart && packages.next) {\n return incompatible('TanStack Start and Next.js markers are both present.')\n }\n\n if (!hasReactRouter) {\n return incompatible('Could not find @tanstack/react-router.')\n }\n\n const kind: TanStackAppKind = hasReactStart ? 'start' : 'router-only'\n const viteConfigPaths = await findFiles({\n cwd: absoluteProjectDir,\n pattern: `vite.config.@(${FILE_EXTENSIONS})`,\n })\n if (viteConfigPaths.length > 1) {\n return incompatible(\n getAmbiguousFilesReason({\n filePaths: viteConfigPaths,\n projectDir: absoluteProjectDir,\n role: 'Vite config',\n }),\n )\n }\n\n const viteConfigPath = viteConfigPaths[0]\n if (!viteConfigPath) {\n return incompatible('Could not find a Vite config file.')\n }\n\n const viteConfig = await fse.readFile(viteConfigPath, 'utf8')\n const pluginName = kind === 'start' ? 'tanstackStart' : 'tanstackRouter'\n if (!new RegExp(`\\\\b${pluginName}\\\\s*\\\\(`).test(viteConfig)) {\n return incompatible(`Could not find ${pluginName}() in ${viteConfigPath}.`)\n }\n\n const sourceDir = path.join(absoluteProjectDir, 'src')\n const routesDir = path.join(sourceDir, 'routes')\n const routerPaths = await findFiles({\n cwd: sourceDir,\n pattern: `router.@(${FILE_EXTENSIONS})`,\n })\n if (routerPaths.length > 1) {\n return incompatible(\n getAmbiguousFilesReason({\n filePaths: routerPaths,\n projectDir: absoluteProjectDir,\n role: 'router',\n }),\n )\n }\n\n const routerPath = routerPaths[0]\n if (!routerPath) {\n return incompatible(`Could not find src/router.* in ${absoluteProjectDir}.`)\n }\n\n const router = await fse.readFile(routerPath, 'utf8')\n if (!/\\bgetRouter\\b/.test(router)) {\n return incompatible(`Could not find getRouter in ${routerPath}.`)\n }\n\n const rootRoutePaths = await findFiles({\n cwd: routesDir,\n pattern: `__root.@(${FILE_EXTENSIONS})`,\n })\n if (rootRoutePaths.length > 1) {\n return incompatible(\n getAmbiguousFilesReason({\n filePaths: rootRoutePaths,\n projectDir: absoluteProjectDir,\n role: 'root route',\n }),\n )\n }\n\n const rootRoutePath = rootRoutePaths[0]\n if (!rootRoutePath) {\n return incompatible(`Could not find src/routes/__root.* in ${absoluteProjectDir}.`)\n }\n\n const details: TanStackAppDetails = {\n isPayloadInstalled: Boolean(packages.payload),\n kind,\n projectDir: absoluteProjectDir,\n rootRoutePath,\n routerPath,\n routesDir,\n sourceDir,\n viteConfigPath,\n }\n\n return { compatible: true, details, detected: true }\n}\n\nfunction incompatible(reason: string): TanStackDetectionResult {\n return { compatible: false, detected: true, reason }\n}\n\nfunction getAmbiguousFilesReason({\n filePaths,\n projectDir,\n role,\n}: {\n filePaths: string[]\n projectDir: string\n role: string\n}): string {\n const relativePaths = filePaths.map((filePath) => path.relative(projectDir, filePath)).sort()\n\n return `Found multiple supported ${role} files: ${relativePaths.join(', ')}.`\n}\n\nasync function findFiles({ cwd, pattern }: { cwd: string; pattern: string }): Promise<string[]> {\n return globby(pattern, {\n absolute: true,\n cwd,\n onlyFiles: true,\n })\n}\n\nasync function getPackageJson({ projectDir }: { projectDir: string }): Promise<PackageJson> {\n const packageJsonPath = path.join(projectDir, 'package.json')\n\n if (!(await fse.pathExists(packageJsonPath))) {\n return {}\n }\n\n return fse.readJson(packageJsonPath) as Promise<PackageJson>\n}\n"],"names":["fse","globby","path","FILE_EXTENSIONS","getTanStackAppDetails","projectDir","absoluteProjectDir","resolve","packageJson","getPackageJson","packages","dependencies","devDependencies","isSolidHost","Boolean","hasReactRouter","hasReactStart","hasRouterPlugin","detected","incompatible","next","kind","viteConfigPaths","findFiles","cwd","pattern","length","getAmbiguousFilesReason","filePaths","role","viteConfigPath","viteConfig","readFile","pluginName","RegExp","test","sourceDir","join","routesDir","routerPaths","routerPath","router","rootRoutePaths","rootRoutePath","details","isPayloadInstalled","payload","compatible","reason","relativePaths","map","filePath","relative","sort","absolute","onlyFiles","packageJsonPath","pathExists","readJson"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { TanStackAppDetails } from '../../types.js';
|
|
2
|
+
export type PreparedWrite = {
|
|
3
|
+
/** Exact content to write after every preparation check succeeds. */
|
|
4
|
+
content: string;
|
|
5
|
+
/** Absolute destination path in the detected host project. */
|
|
6
|
+
filePath: string;
|
|
7
|
+
};
|
|
8
|
+
type PrepareResult = {
|
|
9
|
+
reason: string;
|
|
10
|
+
success: false;
|
|
11
|
+
} | {
|
|
12
|
+
success: true;
|
|
13
|
+
writes: PreparedWrite[];
|
|
14
|
+
};
|
|
15
|
+
export declare function prepareTanStackInit({ appDetails, templateRoot, }: {
|
|
16
|
+
appDetails: TanStackAppDetails;
|
|
17
|
+
templateRoot: string;
|
|
18
|
+
}): Promise<PrepareResult>;
|
|
19
|
+
export declare function applyPreparedWrites({ writes }: {
|
|
20
|
+
writes: PreparedWrite[];
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=prepare.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/prepare.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAQxD,MAAM,MAAM,aAAa,GAAG;IAC1B,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAAA;AAOpG,wBAAsB,mBAAmB,CAAC,EACxC,UAAU,EACV,YAAY,GACb,EAAE;IACD,UAAU,EAAE,kBAAkB,CAAA;IAC9B,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoEzB;AAED,wBAAsB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import fse from 'fs-extra';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { TANSTACK_TEMPLATE_FILES } from './template-files.js';
|
|
4
|
+
import { transformTanStackRootRoute } from './transform-root-route.js';
|
|
5
|
+
import { transformTanStackRouter } from './transform-router.js';
|
|
6
|
+
import { transformTanStackViteConfig } from './transform-vite-config.js';
|
|
7
|
+
export async function prepareTanStackInit({ appDetails, templateRoot }) {
|
|
8
|
+
try {
|
|
9
|
+
const templateFilesResult = await getTemplateFiles({
|
|
10
|
+
appDetails,
|
|
11
|
+
templateRoot
|
|
12
|
+
});
|
|
13
|
+
if (!templateFilesResult.success) {
|
|
14
|
+
return templateFilesResult;
|
|
15
|
+
}
|
|
16
|
+
const [viteConfigContent, routerContent, rootRouteContent, ...templateContents] = await Promise.all([
|
|
17
|
+
fse.readFile(appDetails.viteConfigPath, 'utf8'),
|
|
18
|
+
fse.readFile(appDetails.routerPath, 'utf8'),
|
|
19
|
+
fse.readFile(appDetails.rootRoutePath, 'utf8'),
|
|
20
|
+
...templateFilesResult.files.map(({ templatePath })=>fse.readFile(templatePath, 'utf8'))
|
|
21
|
+
]);
|
|
22
|
+
const transformedFiles = [
|
|
23
|
+
{
|
|
24
|
+
filePath: appDetails.viteConfigPath,
|
|
25
|
+
result: transformTanStackViteConfig({
|
|
26
|
+
appDetails,
|
|
27
|
+
content: viteConfigContent
|
|
28
|
+
})
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
filePath: appDetails.routerPath,
|
|
32
|
+
result: transformTanStackRouter({
|
|
33
|
+
content: routerContent
|
|
34
|
+
})
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
filePath: appDetails.rootRoutePath,
|
|
38
|
+
result: transformTanStackRootRoute({
|
|
39
|
+
content: rootRouteContent,
|
|
40
|
+
kind: appDetails.kind
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
const failedTransform = transformedFiles.find(({ result })=>!result.success);
|
|
45
|
+
if (failedTransform && !failedTransform.result.success) {
|
|
46
|
+
return {
|
|
47
|
+
reason: `Could not transform ${failedTransform.filePath}: ${failedTransform.result.reason}`,
|
|
48
|
+
success: false
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const writes = transformedFiles.flatMap(({ filePath, result })=>result.success && result.modified ? [
|
|
52
|
+
{
|
|
53
|
+
content: result.content,
|
|
54
|
+
filePath
|
|
55
|
+
}
|
|
56
|
+
] : []);
|
|
57
|
+
for (const [index, templateFile] of templateFilesResult.files.entries()){
|
|
58
|
+
const content = templateContents[index];
|
|
59
|
+
const { filePath } = templateFile;
|
|
60
|
+
if (await fse.pathExists(filePath)) {
|
|
61
|
+
const existingContent = await fse.readFile(filePath, 'utf8');
|
|
62
|
+
if (existingContent !== content) {
|
|
63
|
+
return {
|
|
64
|
+
reason: `A different file already exists at ${filePath}.`,
|
|
65
|
+
success: false
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
writes.push({
|
|
71
|
+
content,
|
|
72
|
+
filePath
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
success: true,
|
|
77
|
+
writes
|
|
78
|
+
};
|
|
79
|
+
} catch (error) {
|
|
80
|
+
return {
|
|
81
|
+
reason: error instanceof Error ? error.message : 'Could not prepare TanStack files.',
|
|
82
|
+
success: false
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export async function applyPreparedWrites({ writes }) {
|
|
87
|
+
for (const { content, filePath } of writes){
|
|
88
|
+
await fse.ensureDir(path.dirname(filePath));
|
|
89
|
+
await fse.writeFile(filePath, content);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function getTemplateFiles({ appDetails, templateRoot }) {
|
|
93
|
+
const files = [];
|
|
94
|
+
const hasPackedTemplateLayout = await fse.pathExists(path.join(templateRoot, 'routes'));
|
|
95
|
+
for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES){
|
|
96
|
+
const templatePath = hasPackedTemplateLayout ? path.join(templateRoot, destination, relativePath) : path.join(templateRoot, sourcePath);
|
|
97
|
+
if (!await fse.pathExists(templatePath)) {
|
|
98
|
+
return {
|
|
99
|
+
reason: `Required TanStack template file is missing: ${templatePath}.`,
|
|
100
|
+
success: false
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
files.push({
|
|
104
|
+
filePath: path.join(destination === 'src' ? appDetails.sourceDir : appDetails.routesDir, relativePath),
|
|
105
|
+
templatePath
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
files,
|
|
110
|
+
success: true
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/tanstack/prepare.ts"],"sourcesContent":["import fse from 'fs-extra'\nimport path from 'node:path'\n\nimport type { TanStackAppDetails } from '../../types.js'\nimport type { TextTransformResult } from './transform-vite-config.js'\n\nimport { TANSTACK_TEMPLATE_FILES } from './template-files.js'\nimport { transformTanStackRootRoute } from './transform-root-route.js'\nimport { transformTanStackRouter } from './transform-router.js'\nimport { transformTanStackViteConfig } from './transform-vite-config.js'\n\nexport type PreparedWrite = {\n /** Exact content to write after every preparation check succeeds. */\n content: string\n /** Absolute destination path in the detected host project. */\n filePath: string\n}\n\ntype PrepareResult = { reason: string; success: false } | { success: true; writes: PreparedWrite[] }\n\ntype TemplateFile = {\n filePath: string\n templatePath: string\n}\n\nexport async function prepareTanStackInit({\n appDetails,\n templateRoot,\n}: {\n appDetails: TanStackAppDetails\n templateRoot: string\n}): Promise<PrepareResult> {\n try {\n const templateFilesResult = await getTemplateFiles({ appDetails, templateRoot })\n if (!templateFilesResult.success) {\n return templateFilesResult\n }\n\n const [viteConfigContent, routerContent, rootRouteContent, ...templateContents] =\n await Promise.all([\n fse.readFile(appDetails.viteConfigPath, 'utf8'),\n fse.readFile(appDetails.routerPath, 'utf8'),\n fse.readFile(appDetails.rootRoutePath, 'utf8'),\n ...templateFilesResult.files.map(({ templatePath }) => fse.readFile(templatePath, 'utf8')),\n ])\n\n const transformedFiles: Array<{\n filePath: string\n result: TextTransformResult\n }> = [\n {\n filePath: appDetails.viteConfigPath,\n result: transformTanStackViteConfig({ appDetails, content: viteConfigContent }),\n },\n {\n filePath: appDetails.routerPath,\n result: transformTanStackRouter({ content: routerContent }),\n },\n {\n filePath: appDetails.rootRoutePath,\n result: transformTanStackRootRoute({ content: rootRouteContent, kind: appDetails.kind }),\n },\n ]\n\n const failedTransform = transformedFiles.find(({ result }) => !result.success)\n if (failedTransform && !failedTransform.result.success) {\n return {\n reason: `Could not transform ${failedTransform.filePath}: ${failedTransform.result.reason}`,\n success: false,\n }\n }\n\n const writes: PreparedWrite[] = transformedFiles.flatMap(({ filePath, result }) =>\n result.success && result.modified ? [{ content: result.content, filePath }] : [],\n )\n\n for (const [index, templateFile] of templateFilesResult.files.entries()) {\n const content = templateContents[index]!\n const { filePath } = templateFile\n\n if (await fse.pathExists(filePath)) {\n const existingContent = await fse.readFile(filePath, 'utf8')\n if (existingContent !== content) {\n return { reason: `A different file already exists at ${filePath}.`, success: false }\n }\n\n continue\n }\n\n writes.push({ content, filePath })\n }\n\n return { success: true, writes }\n } catch (error) {\n return {\n reason: error instanceof Error ? error.message : 'Could not prepare TanStack files.',\n success: false,\n }\n }\n}\n\nexport async function applyPreparedWrites({ writes }: { writes: PreparedWrite[] }): Promise<void> {\n for (const { content, filePath } of writes) {\n await fse.ensureDir(path.dirname(filePath))\n await fse.writeFile(filePath, content)\n }\n}\n\nasync function getTemplateFiles({\n appDetails,\n templateRoot,\n}: {\n appDetails: TanStackAppDetails\n templateRoot: string\n}): Promise<{ files: TemplateFile[]; success: true } | { reason: string; success: false }> {\n const files: TemplateFile[] = []\n const hasPackedTemplateLayout = await fse.pathExists(path.join(templateRoot, 'routes'))\n\n for (const { destination, relativePath, sourcePath } of TANSTACK_TEMPLATE_FILES) {\n const templatePath = hasPackedTemplateLayout\n ? path.join(templateRoot, destination, relativePath)\n : path.join(templateRoot, sourcePath)\n if (!(await fse.pathExists(templatePath))) {\n return {\n reason: `Required TanStack template file is missing: ${templatePath}.`,\n success: false,\n }\n }\n\n files.push({\n filePath: path.join(\n destination === 'src' ? appDetails.sourceDir : appDetails.routesDir,\n relativePath,\n ),\n templatePath,\n })\n }\n\n return { files, success: true }\n}\n"],"names":["fse","path","TANSTACK_TEMPLATE_FILES","transformTanStackRootRoute","transformTanStackRouter","transformTanStackViteConfig","prepareTanStackInit","appDetails","templateRoot","templateFilesResult","getTemplateFiles","success","viteConfigContent","routerContent","rootRouteContent","templateContents","Promise","all","readFile","viteConfigPath","routerPath","rootRoutePath","files","map","templatePath","transformedFiles","filePath","result","content","kind","failedTransform","find","reason","writes","flatMap","modified","index","templateFile","entries","pathExists","existingContent","push","error","Error","message","applyPreparedWrites","ensureDir","dirname","writeFile","hasPackedTemplateLayout","join","destination","relativePath","sourcePath","sourceDir","routesDir"],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export declare const TANSTACK_TEMPLATE_FILES: readonly [{
|
|
2
|
+
readonly destination: 'routes';
|
|
3
|
+
readonly relativePath: '_payload.tsx';
|
|
4
|
+
readonly sourcePath: 'app/_payload.tsx';
|
|
5
|
+
}, {
|
|
6
|
+
readonly destination: 'routes';
|
|
7
|
+
readonly relativePath: '_payload/admin.$.tsx';
|
|
8
|
+
readonly sourcePath: 'app/_payload/admin.$.tsx';
|
|
9
|
+
}, {
|
|
10
|
+
readonly destination: 'routes';
|
|
11
|
+
readonly relativePath: '_payload/admin.index.tsx';
|
|
12
|
+
readonly sourcePath: 'app/_payload/admin.index.tsx';
|
|
13
|
+
}, {
|
|
14
|
+
readonly destination: 'routes';
|
|
15
|
+
readonly relativePath: '_payload/api.$.ts';
|
|
16
|
+
readonly sourcePath: 'app/_payload/api.$.ts';
|
|
17
|
+
}, {
|
|
18
|
+
readonly destination: 'routes';
|
|
19
|
+
readonly relativePath: '_payload/custom.css';
|
|
20
|
+
readonly sourcePath: 'app/_payload/custom.css';
|
|
21
|
+
}, {
|
|
22
|
+
readonly destination: 'routes';
|
|
23
|
+
readonly relativePath: '_payload/importMap.js';
|
|
24
|
+
readonly sourcePath: 'app/_payload/importMap.js';
|
|
25
|
+
}, {
|
|
26
|
+
readonly destination: 'routes';
|
|
27
|
+
readonly relativePath: '_payload/server.functions.ts';
|
|
28
|
+
readonly sourcePath: 'app/_payload/server.functions.ts';
|
|
29
|
+
}, {
|
|
30
|
+
readonly destination: 'src';
|
|
31
|
+
readonly relativePath: 'collections/Folders.ts';
|
|
32
|
+
readonly sourcePath: 'collections/Folders.ts';
|
|
33
|
+
}, {
|
|
34
|
+
readonly destination: 'src';
|
|
35
|
+
readonly relativePath: 'collections/Media.ts';
|
|
36
|
+
readonly sourcePath: 'collections/Media.ts';
|
|
37
|
+
}, {
|
|
38
|
+
readonly destination: 'src';
|
|
39
|
+
readonly relativePath: 'collections/Tags.ts';
|
|
40
|
+
readonly sourcePath: 'collections/Tags.ts';
|
|
41
|
+
}, {
|
|
42
|
+
readonly destination: 'src';
|
|
43
|
+
readonly relativePath: 'collections/Users.ts';
|
|
44
|
+
readonly sourcePath: 'collections/Users.ts';
|
|
45
|
+
}, {
|
|
46
|
+
readonly destination: 'src';
|
|
47
|
+
readonly relativePath: 'payload.config.ts';
|
|
48
|
+
readonly sourcePath: 'payload.config.ts';
|
|
49
|
+
}];
|
|
50
|
+
//# sourceMappingURL=template-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-files.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/template-files.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB;aAEhC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,cAAc;aAC5B,UAAU,EAAE,kBAAkB;;aAG9B,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,0BAA0B;;aAGtC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,0BAA0B;aACxC,UAAU,EAAE,8BAA8B;;aAG1C,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,uBAAuB;;aAGnC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,yBAAyB;;aAGrC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,uBAAuB;aACrC,UAAU,EAAE,2BAA2B;;aAGvC,WAAW,EAAE,QAAQ;aACrB,YAAY,EAAE,8BAA8B;aAC5C,UAAU,EAAE,kCAAkC;;aAG9C,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,wBAAwB;aACtC,UAAU,EAAE,wBAAwB;;aAGpC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,qBAAqB;aACnC,UAAU,EAAE,qBAAqB;;aAGjC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,sBAAsB;aACpC,UAAU,EAAE,sBAAsB;;aAGlC,WAAW,EAAE,KAAK;aAClB,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,mBAAmB;EAEzB,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export const TANSTACK_TEMPLATE_FILES = [
|
|
2
|
+
{
|
|
3
|
+
destination: 'routes',
|
|
4
|
+
relativePath: '_payload.tsx',
|
|
5
|
+
sourcePath: 'app/_payload.tsx'
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
destination: 'routes',
|
|
9
|
+
relativePath: '_payload/admin.$.tsx',
|
|
10
|
+
sourcePath: 'app/_payload/admin.$.tsx'
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
destination: 'routes',
|
|
14
|
+
relativePath: '_payload/admin.index.tsx',
|
|
15
|
+
sourcePath: 'app/_payload/admin.index.tsx'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
destination: 'routes',
|
|
19
|
+
relativePath: '_payload/api.$.ts',
|
|
20
|
+
sourcePath: 'app/_payload/api.$.ts'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
destination: 'routes',
|
|
24
|
+
relativePath: '_payload/custom.css',
|
|
25
|
+
sourcePath: 'app/_payload/custom.css'
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
destination: 'routes',
|
|
29
|
+
relativePath: '_payload/importMap.js',
|
|
30
|
+
sourcePath: 'app/_payload/importMap.js'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
destination: 'routes',
|
|
34
|
+
relativePath: '_payload/server.functions.ts',
|
|
35
|
+
sourcePath: 'app/_payload/server.functions.ts'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
destination: 'src',
|
|
39
|
+
relativePath: 'collections/Folders.ts',
|
|
40
|
+
sourcePath: 'collections/Folders.ts'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
destination: 'src',
|
|
44
|
+
relativePath: 'collections/Media.ts',
|
|
45
|
+
sourcePath: 'collections/Media.ts'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
destination: 'src',
|
|
49
|
+
relativePath: 'collections/Tags.ts',
|
|
50
|
+
sourcePath: 'collections/Tags.ts'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
destination: 'src',
|
|
54
|
+
relativePath: 'collections/Users.ts',
|
|
55
|
+
sourcePath: 'collections/Users.ts'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
destination: 'src',
|
|
59
|
+
relativePath: 'payload.config.ts',
|
|
60
|
+
sourcePath: 'payload.config.ts'
|
|
61
|
+
}
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=template-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/tanstack/template-files.ts"],"sourcesContent":["export const TANSTACK_TEMPLATE_FILES = [\n {\n destination: 'routes',\n relativePath: '_payload.tsx',\n sourcePath: 'app/_payload.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.$.tsx',\n sourcePath: 'app/_payload/admin.$.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/admin.index.tsx',\n sourcePath: 'app/_payload/admin.index.tsx',\n },\n {\n destination: 'routes',\n relativePath: '_payload/api.$.ts',\n sourcePath: 'app/_payload/api.$.ts',\n },\n {\n destination: 'routes',\n relativePath: '_payload/custom.css',\n sourcePath: 'app/_payload/custom.css',\n },\n {\n destination: 'routes',\n relativePath: '_payload/importMap.js',\n sourcePath: 'app/_payload/importMap.js',\n },\n {\n destination: 'routes',\n relativePath: '_payload/server.functions.ts',\n sourcePath: 'app/_payload/server.functions.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Folders.ts',\n sourcePath: 'collections/Folders.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Media.ts',\n sourcePath: 'collections/Media.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Tags.ts',\n sourcePath: 'collections/Tags.ts',\n },\n {\n destination: 'src',\n relativePath: 'collections/Users.ts',\n sourcePath: 'collections/Users.ts',\n },\n {\n destination: 'src',\n relativePath: 'payload.config.ts',\n sourcePath: 'payload.config.ts',\n },\n] as const\n"],"names":["TANSTACK_TEMPLATE_FILES","destination","relativePath","sourcePath"],"mappings":"AAAA,OAAO,MAAMA,0BAA0B;IACrC;QACEC,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;IACA;QACEF,aAAa;QACbC,cAAc;QACdC,YAAY;IACd;CACD,CAAS"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TanStackAppDetails } from '../../types.js';
|
|
2
|
+
import type { TextTransformResult } from './transform-vite-config.js';
|
|
3
|
+
export declare function transformTanStackRootRoute({ content, kind, }: {
|
|
4
|
+
content: string;
|
|
5
|
+
kind: TanStackAppDetails['kind'];
|
|
6
|
+
}): TextTransformResult;
|
|
7
|
+
//# sourceMappingURL=transform-root-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-root-route.d.ts","sourceRoot":"","sources":["../../../src/lib/tanstack/transform-root-route.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAkBrE,wBAAgB,0BAA0B,CAAC,EACzC,OAAO,EACP,IAAI,GACL,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAA;CACjC,GAAG,mBAAmB,CAyCtB"}
|