create-payload-app 4.0.0-internal.4cbdd50 → 4.0.0-internal.4e1f822
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 +15 -0
- package/dist/lib/agent-config.d.ts.map +1 -0
- package/dist/lib/agent-config.js +22 -0
- package/dist/lib/agent-config.js.map +1 -0
- package/dist/lib/agent-config.spec.js +23 -0
- package/dist/lib/agent-config.spec.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/package-json.spec.js +73 -1
- package/dist/lib/ast/package-json.spec.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-payload-tsconfig.spec.js +135 -0
- package/dist/lib/configure-payload-tsconfig.spec.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 +10 -21
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/create-project.spec.js +9 -0
- package/dist/lib/create-project.spec.js.map +1 -1
- package/dist/lib/generate-secret.js +1 -1
- package/dist/lib/generate-secret.js.map +1 -1
- package/dist/lib/init-next.d.ts.map +1 -1
- package/dist/lib/init-next.js +10 -34
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/init-tanstack-default-template.spec.js +121 -0
- package/dist/lib/init-tanstack-default-template.spec.js.map +1 -0
- 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 +150 -0
- package/dist/lib/init-tanstack.js.map +1 -0
- package/dist/lib/init-tanstack.spec.js +394 -0
- package/dist/lib/init-tanstack.spec.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/detect.spec.js +227 -0
- package/dist/lib/tanstack/detect.spec.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/prepare.spec.js +288 -0
- package/dist/lib/tanstack/prepare.spec.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-root-route.spec.js +484 -0
- package/dist/lib/tanstack/transform-root-route.spec.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-router.spec.js +264 -0
- package/dist/lib/tanstack/transform-router.spec.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/tanstack/transform-vite-config.spec.js +456 -0
- package/dist/lib/tanstack/transform-vite-config.spec.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/update-payload-in-project.spec.js +262 -0
- package/dist/lib/update-payload-in-project.spec.js.map +1 -0
- 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 +120 -29
- package/dist/main.js.map +1 -1
- package/dist/main.spec.js +102 -0
- package/dist/main.spec.js.map +1 -0
- 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 +1 -1
- package/dist/template/src/app/(payload)/layout.tsx +8 -2
- package/dist/template-tanstack/routes/_payload/admin.$.tsx +8 -0
- package/dist/template-tanstack/routes/_payload/admin.index.tsx +8 -0
- package/dist/template-tanstack/routes/_payload/api.$.ts +10 -0
- package/dist/template-tanstack/routes/_payload/importMap.js +32 -0
- package/dist/template-tanstack/routes/_payload/server.functions.ts +49 -0
- package/dist/template-tanstack/routes/_payload.tsx +30 -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 +40 -0
- package/dist/template-tanstack/src/payload.css +1 -0
- package/dist/types.d.ts +22 -3
- 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 +8 -6
- package/dist/utils/messages.js.map +1 -1
- package/package.json +4 -4
- 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/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/template/src/app/(payload)/{custom.scss → custom.css} +0 -0
package/dist/main.js
CHANGED
|
@@ -10,15 +10,16 @@ import { parseExample } from './lib/examples.js';
|
|
|
10
10
|
import { generateSecret } from './lib/generate-secret.js';
|
|
11
11
|
import { getPackageManager } from './lib/get-package-manager.js';
|
|
12
12
|
import { getNextAppDetails, initNext } from './lib/init-next.js';
|
|
13
|
+
import { initTanStack } from './lib/init-tanstack.js';
|
|
13
14
|
import { manageEnvFiles } from './lib/manage-env-files.js';
|
|
14
15
|
import { parseProjectName } from './lib/parse-project-name.js';
|
|
15
16
|
import { parseTemplate } from './lib/parse-template.js';
|
|
16
|
-
import { selectAgent } from './lib/select-agent.js';
|
|
17
17
|
import { selectDb } from './lib/select-db.js';
|
|
18
|
+
import { getTanStackAppDetails } from './lib/tanstack/detect.js';
|
|
18
19
|
import { getValidTemplates, validateTemplate } from './lib/templates.js';
|
|
19
|
-
import {
|
|
20
|
+
import { updatePayloadInNextProject, updatePayloadInTanStackProject } from './lib/update-payload-in-project.js';
|
|
20
21
|
import { debug, error, info } from './utils/log.js';
|
|
21
|
-
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successMessage } from './utils/messages.js';
|
|
22
|
+
import { feedbackOutro, helpMessage, moveMessage, successfulNextInit, successfulTanStackInit, successMessage } from './utils/messages.js';
|
|
22
23
|
import { DEFAULT_PAYLOAD_VERSION_TAG, resolvePackageVersion } from './utils/resolvePackageVersion.js';
|
|
23
24
|
export class Main {
|
|
24
25
|
args;
|
|
@@ -54,7 +55,6 @@ export class Main {
|
|
|
54
55
|
'--debug': Boolean,
|
|
55
56
|
'--dry-run': Boolean,
|
|
56
57
|
// Aliases
|
|
57
|
-
'-a': '--agent',
|
|
58
58
|
'-d': '--db',
|
|
59
59
|
'-e': '--example',
|
|
60
60
|
'-h': '--help',
|
|
@@ -84,23 +84,46 @@ export class Main {
|
|
|
84
84
|
console.log('\n');
|
|
85
85
|
p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
|
|
86
86
|
p.note("Welcome to Payload. Let's create a project!");
|
|
87
|
-
|
|
87
|
+
const tanStackDetection = await getTanStackAppDetails({
|
|
88
|
+
projectDir: process.cwd()
|
|
89
|
+
});
|
|
88
90
|
const nextAppDetails = await getNextAppDetails(process.cwd());
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
const appFramework = resolveAppFramework({
|
|
92
|
+
nextAppDetails,
|
|
93
|
+
tanStackDetection
|
|
94
|
+
});
|
|
95
|
+
if (appFramework.kind === 'ambiguous') {
|
|
96
|
+
p.log.warn('Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.');
|
|
97
|
+
p.outro(feedbackOutro());
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (appFramework.kind === 'unsupported-tanstack') {
|
|
101
|
+
p.log.warn(appFramework.reason);
|
|
102
|
+
p.outro(feedbackOutro());
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {
|
|
106
|
+
p.log.warn(`Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`);
|
|
92
107
|
p.outro(feedbackOutro());
|
|
93
108
|
process.exit(0);
|
|
94
109
|
}
|
|
95
|
-
|
|
96
|
-
if (
|
|
110
|
+
const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled;
|
|
111
|
+
if (hasPayload) {
|
|
97
112
|
p.log.warn(`Payload installation detected in current project.`);
|
|
98
113
|
const shouldUpdate = await p.confirm({
|
|
99
114
|
initialValue: false,
|
|
100
115
|
message: chalk.bold(`Upgrade Payload in this project?`)
|
|
101
116
|
});
|
|
102
117
|
if (!p.isCancel(shouldUpdate) && shouldUpdate) {
|
|
103
|
-
const
|
|
118
|
+
const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG;
|
|
119
|
+
const updateResult = appFramework.kind === 'next' ? await updatePayloadInNextProject({
|
|
120
|
+
appDetails: appFramework.appDetails,
|
|
121
|
+
versionOrTag
|
|
122
|
+
}) : await updatePayloadInTanStackProject({
|
|
123
|
+
appDetails: appFramework.appDetails,
|
|
124
|
+
versionOrTag
|
|
125
|
+
});
|
|
126
|
+
const { message, success: updateSuccess } = updateResult;
|
|
104
127
|
if (updateSuccess) {
|
|
105
128
|
info(message);
|
|
106
129
|
} else {
|
|
@@ -108,18 +131,28 @@ export class Main {
|
|
|
108
131
|
}
|
|
109
132
|
}
|
|
110
133
|
p.outro(feedbackOutro());
|
|
111
|
-
|
|
134
|
+
return;
|
|
112
135
|
}
|
|
113
|
-
if (
|
|
114
|
-
this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)));
|
|
136
|
+
if (appFramework.kind === 'next') {
|
|
137
|
+
this.args['--name'] = slugify(path.basename(path.dirname(appFramework.appDetails.nextConfigPath)));
|
|
138
|
+
} else if (appFramework.kind === 'tanstack') {
|
|
139
|
+
this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir));
|
|
115
140
|
}
|
|
116
141
|
const projectName = await parseProjectName(this.args);
|
|
117
|
-
|
|
142
|
+
let projectDir;
|
|
143
|
+
if (appFramework.kind === 'next') {
|
|
144
|
+
projectDir = path.dirname(appFramework.appDetails.nextConfigPath);
|
|
145
|
+
} else if (appFramework.kind === 'tanstack') {
|
|
146
|
+
projectDir = appFramework.appDetails.projectDir;
|
|
147
|
+
} else {
|
|
148
|
+
projectDir = path.resolve(process.cwd(), slugify(projectName));
|
|
149
|
+
}
|
|
118
150
|
const packageManager = await getPackageManager({
|
|
119
151
|
cliArgs: this.args,
|
|
120
152
|
projectDir
|
|
121
153
|
});
|
|
122
|
-
if (
|
|
154
|
+
if (appFramework.kind === 'next') {
|
|
155
|
+
const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails;
|
|
123
156
|
p.log.step(chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`));
|
|
124
157
|
const proceed = await p.confirm({
|
|
125
158
|
initialValue: true,
|
|
@@ -142,7 +175,7 @@ export class Main {
|
|
|
142
175
|
const result = await initNext({
|
|
143
176
|
...this.args,
|
|
144
177
|
dbType: dbDetails.type,
|
|
145
|
-
nextAppDetails,
|
|
178
|
+
nextAppDetails: appFramework.appDetails,
|
|
146
179
|
packageManager,
|
|
147
180
|
projectDir
|
|
148
181
|
});
|
|
@@ -168,6 +201,48 @@ export class Main {
|
|
|
168
201
|
p.outro(feedbackOutro());
|
|
169
202
|
return;
|
|
170
203
|
}
|
|
204
|
+
if (appFramework.kind === 'tanstack') {
|
|
205
|
+
const frameworkName = appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router';
|
|
206
|
+
p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`));
|
|
207
|
+
const proceed = await p.confirm({
|
|
208
|
+
initialValue: true,
|
|
209
|
+
message: chalk.bold(appFramework.appDetails.kind === 'start' ? 'Install Payload in this TanStack Start project?' : 'Convert this project to TanStack Start and install Payload?')
|
|
210
|
+
});
|
|
211
|
+
if (p.isCancel(proceed) || !proceed) {
|
|
212
|
+
p.outro(feedbackOutro());
|
|
213
|
+
process.exit(0);
|
|
214
|
+
}
|
|
215
|
+
const dbDetails = await selectDb(this.args, projectName);
|
|
216
|
+
const result = await initTanStack({
|
|
217
|
+
...this.args,
|
|
218
|
+
appDetails: appFramework.appDetails,
|
|
219
|
+
dbType: dbDetails.type,
|
|
220
|
+
packageManager,
|
|
221
|
+
projectDir
|
|
222
|
+
});
|
|
223
|
+
if (result.success === false) {
|
|
224
|
+
p.log.error(result.reason);
|
|
225
|
+
p.outro(feedbackOutro());
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
await configurePayloadConfig({
|
|
229
|
+
dbType: dbDetails.type,
|
|
230
|
+
projectDirOrConfigPath: {
|
|
231
|
+
payloadConfigPath: result.payloadConfigPath
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
await manageEnvFiles({
|
|
235
|
+
cliArgs: this.args,
|
|
236
|
+
databaseType: dbDetails.type,
|
|
237
|
+
databaseUri: dbDetails.dbUri,
|
|
238
|
+
payloadSecret: generateSecret(),
|
|
239
|
+
projectDir
|
|
240
|
+
});
|
|
241
|
+
info('Payload project successfully initialized!');
|
|
242
|
+
p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')));
|
|
243
|
+
p.outro(feedbackOutro());
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
171
246
|
const templateArg = this.args['--template'];
|
|
172
247
|
if (templateArg) {
|
|
173
248
|
const valid = validateTemplate({
|
|
@@ -188,11 +263,7 @@ export class Main {
|
|
|
188
263
|
helpMessage();
|
|
189
264
|
process.exit(1);
|
|
190
265
|
}
|
|
191
|
-
const agentType = await selectAgent({
|
|
192
|
-
cliArgs: this.args
|
|
193
|
-
});
|
|
194
266
|
await createProject({
|
|
195
|
-
agentType,
|
|
196
267
|
cliArgs: this.args,
|
|
197
268
|
example,
|
|
198
269
|
packageManager,
|
|
@@ -214,11 +285,7 @@ export class Main {
|
|
|
214
285
|
switch(template.type){
|
|
215
286
|
case 'plugin':
|
|
216
287
|
{
|
|
217
|
-
const agentType = await selectAgent({
|
|
218
|
-
cliArgs: this.args
|
|
219
|
-
});
|
|
220
288
|
await createProject({
|
|
221
|
-
agentType,
|
|
222
289
|
cliArgs: this.args,
|
|
223
290
|
packageManager,
|
|
224
291
|
projectDir,
|
|
@@ -230,11 +297,7 @@ export class Main {
|
|
|
230
297
|
case 'starter':
|
|
231
298
|
{
|
|
232
299
|
const dbDetails = await selectDb(this.args, projectName, template);
|
|
233
|
-
const agentType = await selectAgent({
|
|
234
|
-
cliArgs: this.args
|
|
235
|
-
});
|
|
236
300
|
await createProject({
|
|
237
|
-
agentType,
|
|
238
301
|
cliArgs: this.args,
|
|
239
302
|
dbDetails,
|
|
240
303
|
packageManager,
|
|
@@ -255,5 +318,33 @@ export class Main {
|
|
|
255
318
|
}
|
|
256
319
|
}
|
|
257
320
|
}
|
|
321
|
+
export function resolveAppFramework({ nextAppDetails, tanStackDetection }) {
|
|
322
|
+
if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {
|
|
323
|
+
return {
|
|
324
|
+
kind: 'ambiguous'
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
if (nextAppDetails.nextConfigPath) {
|
|
328
|
+
return {
|
|
329
|
+
appDetails: nextAppDetails,
|
|
330
|
+
kind: 'next'
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
if (!tanStackDetection.detected) {
|
|
334
|
+
return {
|
|
335
|
+
kind: 'none'
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
if (!tanStackDetection.compatible) {
|
|
339
|
+
return {
|
|
340
|
+
kind: 'unsupported-tanstack',
|
|
341
|
+
reason: tanStackDetection.reason
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
appDetails: tanStackDetection.details,
|
|
346
|
+
kind: 'tanstack'
|
|
347
|
+
};
|
|
348
|
+
}
|
|
258
349
|
|
|
259
350
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type { CliArgs } from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectAgent } from './lib/select-agent.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { updatePayloadInProject } from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--agent': String,\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or canary; default: canary)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-a': '--agent',\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n // Detect if inside Next.js project\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const {\n hasTopLevelLayout,\n isPayloadInstalled,\n isSupportedNextVersion,\n nextAppDir,\n nextConfigPath,\n nextVersion,\n } = nextAppDetails\n\n if (nextConfigPath && !isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Upgrade Payload in existing project\n if (isPayloadInstalled && nextConfigPath) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const { message, success: updateSuccess } = await updatePayloadInProject(\n nextAppDetails,\n this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n )\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n if (nextConfigPath) {\n this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)))\n }\n\n const projectName = await parseProjectName(this.args)\n const projectDir = nextConfigPath\n ? path.dirname(nextConfigPath)\n : path.resolve(process.cwd(), slugify(projectName))\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (nextConfigPath) {\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n const agentType = await selectAgent({ cliArgs: this.args })\n\n await createProject({\n agentType,\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n const agentType = await selectAgent({ cliArgs: this.args })\n await createProject({\n agentType,\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n const agentType = await selectAgent({ cliArgs: this.args })\n\n await createProject({\n agentType,\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","manageEnvFiles","parseProjectName","parseTemplate","selectAgent","selectDb","getValidTemplates","validateTemplate","updatePayloadInProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","nextAppDetails","cwd","hasTopLevelLayout","isPayloadInstalled","isSupportedNextVersion","nextAppDir","nextConfigPath","nextVersion","warn","outro","shouldUpdate","confirm","initialValue","message","bold","isCancel","success","updateSuccess","basename","dirname","projectName","projectDir","resolve","packageManager","cliArgs","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","templateArg","valid","templateName","exampleArg","example","name","branch","agentType","validTemplates","template","err","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\nimport arg from 'arg'\nimport chalk from 'chalk'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type {\n CliArgs,\n NextAppDetails,\n TanStackAppDetails,\n TanStackDetectionResult,\n} from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { parseExample } from './lib/examples.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getPackageManager } from './lib/get-package-manager.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { initTanStack } from './lib/init-tanstack.js'\nimport { manageEnvFiles } from './lib/manage-env-files.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getTanStackAppDetails } from './lib/tanstack/detect.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport {\n updatePayloadInNextProject,\n updatePayloadInTanStackProject,\n} from './lib/update-payload-in-project.js'\nimport { debug, error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successfulNextInit,\n successfulTanStackInit,\n successMessage,\n} from './utils/messages.js'\nimport {\n DEFAULT_PAYLOAD_VERSION_TAG,\n resolvePackageVersion,\n} from './utils/resolvePackageVersion.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--agent': String,\n '--branch': String,\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--example': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--payload-version': String, // Install a specific Payload version or npm dist-tag (e.g. 3.40.0 or canary; default: canary)\n '--secret': String,\n '--template': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Agent\n '--no-agent': Boolean,\n\n // Package manager\n '--no-deps': Boolean,\n '--use-bun': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Other\n '--no-git': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-e': '--example',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\n const debugFlag = this.args['--debug']\n\n // Set DEBUG env var for logger utility\n if (debugFlag) {\n process.env.DEBUG = 'true'\n }\n\n const LATEST_VERSION = await resolvePackageVersion({\n debug: debugFlag,\n packageName: 'payload',\n versionOrTag: this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG,\n })\n\n if (this.args['--help']) {\n helpMessage()\n process.exit(0)\n }\n\n // eslint-disable-next-line no-console\n console.log('\\n')\n p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')))\n p.note(\"Welcome to Payload. Let's create a project!\")\n\n const tanStackDetection = await getTanStackAppDetails({ projectDir: process.cwd() })\n const nextAppDetails = await getNextAppDetails(process.cwd())\n const appFramework = resolveAppFramework({ nextAppDetails, tanStackDetection })\n\n if (appFramework.kind === 'ambiguous') {\n p.log.warn(\n 'Both Next.js and TanStack project markers were detected. Remove one framework before installing Payload.',\n )\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'unsupported-tanstack') {\n p.log.warn(appFramework.reason)\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next' && !appFramework.appDetails.isSupportedNextVersion) {\n p.log.warn(\n `Next.js v${appFramework.appDetails.nextVersion} is unsupported. Next.js >= 15 is required to use Payload.`,\n )\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const hasPayload = appFramework.kind !== 'none' && appFramework.appDetails.isPayloadInstalled\n\n if (hasPayload) {\n p.log.warn(`Payload installation detected in current project.`)\n const shouldUpdate = await p.confirm({\n initialValue: false,\n message: chalk.bold(`Upgrade Payload in this project?`),\n })\n\n if (!p.isCancel(shouldUpdate) && shouldUpdate) {\n const versionOrTag = this.args['--payload-version'] ?? DEFAULT_PAYLOAD_VERSION_TAG\n const updateResult =\n appFramework.kind === 'next'\n ? await updatePayloadInNextProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n : await updatePayloadInTanStackProject({\n appDetails: appFramework.appDetails,\n versionOrTag,\n })\n\n const { message, success: updateSuccess } = updateResult\n if (updateSuccess) {\n info(message)\n } else {\n error(message)\n }\n }\n\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'next') {\n this.args['--name'] = slugify(\n path.basename(path.dirname(appFramework.appDetails.nextConfigPath!)),\n )\n } else if (appFramework.kind === 'tanstack') {\n this.args['--name'] = slugify(path.basename(appFramework.appDetails.projectDir))\n }\n\n const projectName = await parseProjectName(this.args)\n let projectDir: string\n if (appFramework.kind === 'next') {\n projectDir = path.dirname(appFramework.appDetails.nextConfigPath!)\n } else if (appFramework.kind === 'tanstack') {\n projectDir = appFramework.appDetails.projectDir\n } else {\n projectDir = path.resolve(process.cwd(), slugify(projectName))\n }\n\n const packageManager = await getPackageManager({ cliArgs: this.args, projectDir })\n\n if (appFramework.kind === 'next') {\n const { hasTopLevelLayout, nextAppDir } = appFramework.appDetails\n\n p.log.step(\n chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`),\n )\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n // Check for top-level layout.tsx\n if (nextAppDir && hasTopLevelLayout) {\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n\n const result = await initNext({\n ...this.args,\n dbType: dbDetails.type,\n nextAppDetails: appFramework.appDetails,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails?.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')))\n p.outro(feedbackOutro())\n return\n }\n\n if (appFramework.kind === 'tanstack') {\n const frameworkName =\n appFramework.appDetails.kind === 'start' ? 'TanStack Start' : 'TanStack Router'\n p.log.step(chalk.bold(`${chalk.bgBlack(` ${frameworkName} `)} project detected!`))\n\n const proceed = await p.confirm({\n initialValue: true,\n message: chalk.bold(\n appFramework.appDetails.kind === 'start'\n ? 'Install Payload in this TanStack Start project?'\n : 'Convert this project to TanStack Start and install Payload?',\n ),\n })\n if (p.isCancel(proceed) || !proceed) {\n p.outro(feedbackOutro())\n process.exit(0)\n }\n\n const dbDetails = await selectDb(this.args, projectName)\n const result = await initTanStack({\n ...this.args,\n appDetails: appFramework.appDetails,\n dbType: dbDetails.type,\n packageManager,\n projectDir,\n })\n\n if (result.success === false) {\n p.log.error(result.reason)\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n await configurePayloadConfig({\n dbType: dbDetails.type,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await manageEnvFiles({\n cliArgs: this.args,\n databaseType: dbDetails.type,\n databaseUri: dbDetails.dbUri,\n payloadSecret: generateSecret(),\n projectDir,\n })\n\n info('Payload project successfully initialized!')\n p.note(successfulTanStackInit(), chalk.bgGreen(chalk.black(' TanStack Start initialized ')))\n p.outro(feedbackOutro())\n return\n }\n\n const templateArg = this.args['--template']\n if (templateArg) {\n const valid = validateTemplate({ templateName: templateArg })\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\n const exampleArg = this.args['--example']\n\n if (exampleArg) {\n const example = await parseExample({\n name: exampleArg,\n branch: this.args['--branch'] ?? 'main',\n })\n\n if (!example) {\n helpMessage()\n process.exit(1)\n }\n\n await createProject({\n cliArgs: this.args,\n example,\n packageManager,\n projectDir,\n projectName,\n })\n }\n\n if (debugFlag) {\n debug(`Using ${exampleArg ? 'examples' : 'templates'} from git tag: v${LATEST_VERSION}`)\n }\n\n if (!exampleArg) {\n const validTemplates = getValidTemplates()\n const template = await parseTemplate(this.args, validTemplates)\n if (!template) {\n p.log.error('Invalid template given')\n p.outro(feedbackOutro())\n process.exit(1)\n }\n\n switch (template.type) {\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n case 'starter': {\n const dbDetails = await selectDb(this.args, projectName, template)\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n\n break\n }\n }\n }\n\n info('Payload project successfully created!')\n p.log.step(chalk.bgGreen(chalk.black(' Next Steps ')))\n p.log.message(successMessage(projectDir, packageManager))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\ntype AppFramework =\n | { appDetails: NextAppDetails; kind: 'next' }\n | { appDetails: TanStackAppDetails; kind: 'tanstack' }\n | { kind: 'ambiguous' }\n | { kind: 'none' }\n | { kind: 'unsupported-tanstack'; reason: string }\n\nexport function resolveAppFramework({\n nextAppDetails,\n tanStackDetection,\n}: {\n nextAppDetails: NextAppDetails\n tanStackDetection: TanStackDetectionResult\n}): AppFramework {\n if (nextAppDetails.nextConfigPath && tanStackDetection.detected) {\n return { kind: 'ambiguous' }\n }\n\n if (nextAppDetails.nextConfigPath) {\n return { appDetails: nextAppDetails, kind: 'next' }\n }\n\n if (!tanStackDetection.detected) {\n return { kind: 'none' }\n }\n\n if (!tanStackDetection.compatible) {\n return { kind: 'unsupported-tanstack', reason: tanStackDetection.reason }\n }\n\n return { appDetails: tanStackDetection.details, kind: 'tanstack' }\n}\n"],"names":["p","slugify","arg","chalk","figures","path","configurePayloadConfig","createProject","parseExample","generateSecret","getPackageManager","getNextAppDetails","initNext","initTanStack","manageEnvFiles","parseProjectName","parseTemplate","selectDb","getTanStackAppDetails","getValidTemplates","validateTemplate","updatePayloadInNextProject","updatePayloadInTanStackProject","debug","error","info","feedbackOutro","helpMessage","moveMessage","successfulNextInit","successfulTanStackInit","successMessage","DEFAULT_PAYLOAD_VERSION_TAG","resolvePackageVersion","Main","args","String","Boolean","permissive","init","debugFlag","process","env","DEBUG","LATEST_VERSION","packageName","versionOrTag","exit","console","log","intro","bgCyan","black","note","tanStackDetection","projectDir","cwd","nextAppDetails","appFramework","resolveAppFramework","kind","warn","outro","reason","appDetails","isSupportedNextVersion","nextVersion","hasPayload","isPayloadInstalled","shouldUpdate","confirm","initialValue","message","bold","isCancel","updateResult","success","updateSuccess","basename","dirname","nextConfigPath","projectName","resolve","packageManager","cliArgs","hasTopLevelLayout","nextAppDir","step","bgBlack","triangleUp","proceed","green","dbDetails","result","dbType","type","projectDirOrConfigPath","payloadConfigPath","databaseType","databaseUri","dbUri","payloadSecret","bgGreen","frameworkName","templateArg","valid","templateName","exampleArg","example","name","branch","validTemplates","template","err","Error","detected","compatible","details"],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { resolveAppFramework } from './main.js';
|
|
3
|
+
describe('resolveAppFramework', ()=>{
|
|
4
|
+
it('should reject ambiguous recognized hosts before choosing a framework', ()=>{
|
|
5
|
+
expect(resolveAppFramework({
|
|
6
|
+
nextAppDetails: createNextAppDetails({
|
|
7
|
+
isPayloadInstalled: true
|
|
8
|
+
}),
|
|
9
|
+
tanStackDetection: createTanStackDetection({
|
|
10
|
+
isPayloadInstalled: true
|
|
11
|
+
})
|
|
12
|
+
})).toEqual({
|
|
13
|
+
kind: 'ambiguous'
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
it('should resolve a Next host', ()=>{
|
|
17
|
+
const nextAppDetails = createNextAppDetails({
|
|
18
|
+
isPayloadInstalled: true
|
|
19
|
+
});
|
|
20
|
+
expect(resolveAppFramework({
|
|
21
|
+
nextAppDetails,
|
|
22
|
+
tanStackDetection: {
|
|
23
|
+
detected: false
|
|
24
|
+
}
|
|
25
|
+
})).toEqual({
|
|
26
|
+
appDetails: nextAppDetails,
|
|
27
|
+
kind: 'next'
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('should resolve a compatible TanStack host', ()=>{
|
|
31
|
+
const tanStackDetection = createTanStackDetection({
|
|
32
|
+
isPayloadInstalled: false
|
|
33
|
+
});
|
|
34
|
+
expect(resolveAppFramework({
|
|
35
|
+
nextAppDetails: createNoNextAppDetails(),
|
|
36
|
+
tanStackDetection
|
|
37
|
+
})).toEqual({
|
|
38
|
+
appDetails: tanStackDetection.details,
|
|
39
|
+
kind: 'tanstack'
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
it('should preserve an incompatible TanStack reason', ()=>{
|
|
43
|
+
const tanStackDetection = {
|
|
44
|
+
compatible: false,
|
|
45
|
+
detected: true,
|
|
46
|
+
reason: 'TanStack Solid projects are not supported.'
|
|
47
|
+
};
|
|
48
|
+
expect(resolveAppFramework({
|
|
49
|
+
nextAppDetails: createNoNextAppDetails(),
|
|
50
|
+
tanStackDetection
|
|
51
|
+
})).toEqual({
|
|
52
|
+
kind: 'unsupported-tanstack',
|
|
53
|
+
reason: tanStackDetection.reason
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it('should continue the new-project flow when no host is detected', ()=>{
|
|
57
|
+
expect(resolveAppFramework({
|
|
58
|
+
nextAppDetails: createNoNextAppDetails(),
|
|
59
|
+
tanStackDetection: {
|
|
60
|
+
detected: false
|
|
61
|
+
}
|
|
62
|
+
})).toEqual({
|
|
63
|
+
kind: 'none'
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
function createNextAppDetails({ isPayloadInstalled }) {
|
|
68
|
+
return {
|
|
69
|
+
...createNoNextAppDetails(),
|
|
70
|
+
isPayloadInstalled,
|
|
71
|
+
isSupportedNextVersion: true,
|
|
72
|
+
nextConfigPath: '/project/next.config.ts',
|
|
73
|
+
nextVersion: '15.0.0'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function createNoNextAppDetails() {
|
|
77
|
+
return {
|
|
78
|
+
hasTopLevelLayout: false,
|
|
79
|
+
isSrcDir: true,
|
|
80
|
+
isSupportedNextVersion: false,
|
|
81
|
+
nextVersion: null
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function createTanStackDetection({ isPayloadInstalled }) {
|
|
85
|
+
const details = {
|
|
86
|
+
isPayloadInstalled,
|
|
87
|
+
kind: 'start',
|
|
88
|
+
projectDir: '/project',
|
|
89
|
+
rootRoutePath: '/project/src/routes/__root.tsx',
|
|
90
|
+
routerPath: '/project/src/router.tsx',
|
|
91
|
+
routesDir: '/project/src/routes',
|
|
92
|
+
sourceDir: '/project/src',
|
|
93
|
+
viteConfigPath: '/project/vite.config.ts'
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
compatible: true,
|
|
97
|
+
details,
|
|
98
|
+
detected: true
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=main.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport type { NextAppDetails, TanStackAppDetails, TanStackDetectionResult } from './types.js'\n\nimport { resolveAppFramework } from './main.js'\n\ndescribe('resolveAppFramework', () => {\n it('should reject ambiguous recognized hosts before choosing a framework', () => {\n expect(\n resolveAppFramework({\n nextAppDetails: createNextAppDetails({ isPayloadInstalled: true }),\n tanStackDetection: createTanStackDetection({ isPayloadInstalled: true }),\n }),\n ).toEqual({ kind: 'ambiguous' })\n })\n\n it('should resolve a Next host', () => {\n const nextAppDetails = createNextAppDetails({ isPayloadInstalled: true })\n\n expect(resolveAppFramework({ nextAppDetails, tanStackDetection: { detected: false } })).toEqual(\n { appDetails: nextAppDetails, kind: 'next' },\n )\n })\n\n it('should resolve a compatible TanStack host', () => {\n const tanStackDetection = createTanStackDetection({ isPayloadInstalled: false })\n\n expect(\n resolveAppFramework({ nextAppDetails: createNoNextAppDetails(), tanStackDetection }),\n ).toEqual({ appDetails: tanStackDetection.details, kind: 'tanstack' })\n })\n\n it('should preserve an incompatible TanStack reason', () => {\n const tanStackDetection: TanStackDetectionResult = {\n compatible: false,\n detected: true,\n reason: 'TanStack Solid projects are not supported.',\n }\n\n expect(\n resolveAppFramework({ nextAppDetails: createNoNextAppDetails(), tanStackDetection }),\n ).toEqual({ kind: 'unsupported-tanstack', reason: tanStackDetection.reason })\n })\n\n it('should continue the new-project flow when no host is detected', () => {\n expect(\n resolveAppFramework({\n nextAppDetails: createNoNextAppDetails(),\n tanStackDetection: { detected: false },\n }),\n ).toEqual({ kind: 'none' })\n })\n})\n\nfunction createNextAppDetails({ isPayloadInstalled }: { isPayloadInstalled: boolean }) {\n return {\n ...createNoNextAppDetails(),\n isPayloadInstalled,\n isSupportedNextVersion: true,\n nextConfigPath: '/project/next.config.ts',\n nextVersion: '15.0.0',\n } satisfies NextAppDetails\n}\n\nfunction createNoNextAppDetails(): NextAppDetails {\n return {\n hasTopLevelLayout: false,\n isSrcDir: true,\n isSupportedNextVersion: false,\n nextVersion: null,\n }\n}\n\nfunction createTanStackDetection({\n isPayloadInstalled,\n}: {\n isPayloadInstalled: boolean\n}): Extract<TanStackDetectionResult, { compatible: true }> {\n const details: TanStackAppDetails = {\n isPayloadInstalled,\n kind: 'start',\n projectDir: '/project',\n rootRoutePath: '/project/src/routes/__root.tsx',\n routerPath: '/project/src/router.tsx',\n routesDir: '/project/src/routes',\n sourceDir: '/project/src',\n viteConfigPath: '/project/vite.config.ts',\n }\n\n return { compatible: true, details, detected: true }\n}\n"],"names":["describe","expect","it","resolveAppFramework","nextAppDetails","createNextAppDetails","isPayloadInstalled","tanStackDetection","createTanStackDetection","toEqual","kind","detected","appDetails","createNoNextAppDetails","details","compatible","reason","isSupportedNextVersion","nextConfigPath","nextVersion","hasTopLevelLayout","isSrcDir","projectDir","rootRoutePath","routerPath","routesDir","sourceDir","viteConfigPath"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAI7C,SAASC,mBAAmB,QAAQ,YAAW;AAE/CH,SAAS,uBAAuB;IAC9BE,GAAG,wEAAwE;QACzED,OACEE,oBAAoB;YAClBC,gBAAgBC,qBAAqB;gBAAEC,oBAAoB;YAAK;YAChEC,mBAAmBC,wBAAwB;gBAAEF,oBAAoB;YAAK;QACxE,IACAG,OAAO,CAAC;YAAEC,MAAM;QAAY;IAChC;IAEAR,GAAG,8BAA8B;QAC/B,MAAME,iBAAiBC,qBAAqB;YAAEC,oBAAoB;QAAK;QAEvEL,OAAOE,oBAAoB;YAAEC;YAAgBG,mBAAmB;gBAAEI,UAAU;YAAM;QAAE,IAAIF,OAAO,CAC7F;YAAEG,YAAYR;YAAgBM,MAAM;QAAO;IAE/C;IAEAR,GAAG,6CAA6C;QAC9C,MAAMK,oBAAoBC,wBAAwB;YAAEF,oBAAoB;QAAM;QAE9EL,OACEE,oBAAoB;YAAEC,gBAAgBS;YAA0BN;QAAkB,IAClFE,OAAO,CAAC;YAAEG,YAAYL,kBAAkBO,OAAO;YAAEJ,MAAM;QAAW;IACtE;IAEAR,GAAG,mDAAmD;QACpD,MAAMK,oBAA6C;YACjDQ,YAAY;YACZJ,UAAU;YACVK,QAAQ;QACV;QAEAf,OACEE,oBAAoB;YAAEC,gBAAgBS;YAA0BN;QAAkB,IAClFE,OAAO,CAAC;YAAEC,MAAM;YAAwBM,QAAQT,kBAAkBS,MAAM;QAAC;IAC7E;IAEAd,GAAG,iEAAiE;QAClED,OACEE,oBAAoB;YAClBC,gBAAgBS;YAChBN,mBAAmB;gBAAEI,UAAU;YAAM;QACvC,IACAF,OAAO,CAAC;YAAEC,MAAM;QAAO;IAC3B;AACF;AAEA,SAASL,qBAAqB,EAAEC,kBAAkB,EAAmC;IACnF,OAAO;QACL,GAAGO,wBAAwB;QAC3BP;QACAW,wBAAwB;QACxBC,gBAAgB;QAChBC,aAAa;IACf;AACF;AAEA,SAASN;IACP,OAAO;QACLO,mBAAmB;QACnBC,UAAU;QACVJ,wBAAwB;QACxBE,aAAa;IACf;AACF;AAEA,SAASX,wBAAwB,EAC/BF,kBAAkB,EAGnB;IACC,MAAMQ,UAA8B;QAClCR;QACAI,MAAM;QACNY,YAAY;QACZC,eAAe;QACfC,YAAY;QACZC,WAAW;QACXC,WAAW;QACXC,gBAAgB;IAClB;IAEA,OAAO;QAAEZ,YAAY;QAAMD;QAASH,UAAU;IAAK;AACrD"}
|
|
@@ -2,6 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import fsp from 'fs/promises';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import path from 'path';
|
|
5
|
+
import { TANSTACK_TEMPLATE_FILES } from '../lib/tanstack/template-files.js';
|
|
5
6
|
const filename = fileURLToPath(import.meta.url);
|
|
6
7
|
const dirname = path.dirname(filename);
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
@@ -14,6 +15,8 @@ main();
|
|
|
14
15
|
const root = path.resolve(dirname, '../../../../');
|
|
15
16
|
const outputPath = path.resolve(dirname, '../../dist/template');
|
|
16
17
|
const sourceTemplatePath = path.resolve(root, 'templates/blank');
|
|
18
|
+
const tanStackOutputPath = path.resolve(dirname, '../../dist/template-tanstack');
|
|
19
|
+
const tanStackSourcePath = path.resolve(root, 'templates/blank-tanstack/src');
|
|
17
20
|
if (!fs.existsSync(sourceTemplatePath)) {
|
|
18
21
|
throw new Error(`Source path does not exist: ${sourceTemplatePath}`);
|
|
19
22
|
}
|
|
@@ -29,6 +32,21 @@ main();
|
|
|
29
32
|
await fsp.cp(srcPath, distSrcPath, {
|
|
30
33
|
recursive: true
|
|
31
34
|
});
|
|
35
|
+
if (!fs.existsSync(tanStackSourcePath)) {
|
|
36
|
+
throw new Error(`Source path does not exist: ${tanStackSourcePath}`);
|
|
37
|
+
}
|
|
38
|
+
await Promise.all(TANSTACK_TEMPLATE_FILES.map(({ sourcePath })=>fsp.access(path.join(tanStackSourcePath, sourcePath))));
|
|
39
|
+
await fsp.rm(tanStackOutputPath, {
|
|
40
|
+
force: true,
|
|
41
|
+
recursive: true
|
|
42
|
+
});
|
|
43
|
+
await Promise.all(TANSTACK_TEMPLATE_FILES.map(async ({ destination, relativePath, sourcePath })=>{
|
|
44
|
+
const outputFilePath = path.join(tanStackOutputPath, destination, relativePath);
|
|
45
|
+
await fsp.mkdir(path.dirname(outputFilePath), {
|
|
46
|
+
recursive: true
|
|
47
|
+
});
|
|
48
|
+
await fsp.copyFile(path.join(tanStackSourcePath, sourcePath), outputFilePath);
|
|
49
|
+
}));
|
|
32
50
|
}
|
|
33
51
|
|
|
34
52
|
//# sourceMappingURL=pack-template-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/scripts/pack-template-files.ts"],"sourcesContent":["import fs from 'fs'\nimport fsp from 'fs/promises'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\nmain()\n\n/**\n * Copy the necessary template files from `templates/blank` to `dist/template`\n *\n * Eventually, this should be replaced with using tar.x to stream from the git repo\n */\n\nasync function main() {\n const root = path.resolve(dirname, '../../../../')\n const outputPath = path.resolve(dirname, '../../dist/template')\n const sourceTemplatePath = path.resolve(root, 'templates/blank')\n\n if (!fs.existsSync(sourceTemplatePath)) {\n throw new Error(`Source path does not exist: ${sourceTemplatePath}`)\n }\n\n if (!fs.existsSync(outputPath)) {\n fs.mkdirSync(outputPath, { recursive: true })\n }\n\n // Copy the src directory from `templates/blank` to `dist`\n const srcPath = path.resolve(sourceTemplatePath, 'src')\n const distSrcPath = path.resolve(outputPath, 'src')\n // Copy entire file structure from src to dist\n await fsp.cp(srcPath, distSrcPath, { recursive: true })\n}\n"],"names":["fs","fsp","fileURLToPath","path","filename","url","dirname","main","root","resolve","outputPath","sourceTemplatePath","existsSync","Error","mkdirSync","recursive","srcPath","distSrcPath","cp"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,SAAS,cAAa;AAC7B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;
|
|
1
|
+
{"version":3,"sources":["../../src/scripts/pack-template-files.ts"],"sourcesContent":["import fs from 'fs'\nimport fsp from 'fs/promises'\nimport { fileURLToPath } from 'node:url'\nimport path from 'path'\n\nimport { TANSTACK_TEMPLATE_FILES } from '../lib/tanstack/template-files.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\nmain()\n\n/**\n * Copy the necessary template files from `templates/blank` to `dist/template`\n *\n * Eventually, this should be replaced with using tar.x to stream from the git repo\n */\n\nasync function main() {\n const root = path.resolve(dirname, '../../../../')\n const outputPath = path.resolve(dirname, '../../dist/template')\n const sourceTemplatePath = path.resolve(root, 'templates/blank')\n const tanStackOutputPath = path.resolve(dirname, '../../dist/template-tanstack')\n const tanStackSourcePath = path.resolve(root, 'templates/blank-tanstack/src')\n\n if (!fs.existsSync(sourceTemplatePath)) {\n throw new Error(`Source path does not exist: ${sourceTemplatePath}`)\n }\n\n if (!fs.existsSync(outputPath)) {\n fs.mkdirSync(outputPath, { recursive: true })\n }\n\n // Copy the src directory from `templates/blank` to `dist`\n const srcPath = path.resolve(sourceTemplatePath, 'src')\n const distSrcPath = path.resolve(outputPath, 'src')\n // Copy entire file structure from src to dist\n await fsp.cp(srcPath, distSrcPath, { recursive: true })\n\n if (!fs.existsSync(tanStackSourcePath)) {\n throw new Error(`Source path does not exist: ${tanStackSourcePath}`)\n }\n\n await Promise.all(\n TANSTACK_TEMPLATE_FILES.map(({ sourcePath }) =>\n fsp.access(path.join(tanStackSourcePath, sourcePath)),\n ),\n )\n await fsp.rm(tanStackOutputPath, { force: true, recursive: true })\n await Promise.all(\n TANSTACK_TEMPLATE_FILES.map(async ({ destination, relativePath, sourcePath }) => {\n const outputFilePath = path.join(tanStackOutputPath, destination, relativePath)\n\n await fsp.mkdir(path.dirname(outputFilePath), { recursive: true })\n await fsp.copyFile(path.join(tanStackSourcePath, sourcePath), outputFilePath)\n }),\n )\n}\n"],"names":["fs","fsp","fileURLToPath","path","TANSTACK_TEMPLATE_FILES","filename","url","dirname","main","root","resolve","outputPath","sourceTemplatePath","tanStackOutputPath","tanStackSourcePath","existsSync","Error","mkdirSync","recursive","srcPath","distSrcPath","cp","Promise","all","map","sourcePath","access","join","rm","force","destination","relativePath","outputFilePath","mkdir","copyFile"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,SAAS,cAAa;AAC7B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAEvB,SAASC,uBAAuB,QAAQ,oCAAmC;AAE3E,MAAMC,WAAWH,cAAc,YAAYI,GAAG;AAC9C,MAAMC,UAAUJ,KAAKI,OAAO,CAACF;AAE7B,mEAAmE;AACnEG;AAEA;;;;CAIC,GAED,eAAeA;IACb,MAAMC,OAAON,KAAKO,OAAO,CAACH,SAAS;IACnC,MAAMI,aAAaR,KAAKO,OAAO,CAACH,SAAS;IACzC,MAAMK,qBAAqBT,KAAKO,OAAO,CAACD,MAAM;IAC9C,MAAMI,qBAAqBV,KAAKO,OAAO,CAACH,SAAS;IACjD,MAAMO,qBAAqBX,KAAKO,OAAO,CAACD,MAAM;IAE9C,IAAI,CAACT,GAAGe,UAAU,CAACH,qBAAqB;QACtC,MAAM,IAAII,MAAM,CAAC,4BAA4B,EAAEJ,oBAAoB;IACrE;IAEA,IAAI,CAACZ,GAAGe,UAAU,CAACJ,aAAa;QAC9BX,GAAGiB,SAAS,CAACN,YAAY;YAAEO,WAAW;QAAK;IAC7C;IAEA,0DAA0D;IAC1D,MAAMC,UAAUhB,KAAKO,OAAO,CAACE,oBAAoB;IACjD,MAAMQ,cAAcjB,KAAKO,OAAO,CAACC,YAAY;IAC7C,8CAA8C;IAC9C,MAAMV,IAAIoB,EAAE,CAACF,SAASC,aAAa;QAAEF,WAAW;IAAK;IAErD,IAAI,CAAClB,GAAGe,UAAU,CAACD,qBAAqB;QACtC,MAAM,IAAIE,MAAM,CAAC,4BAA4B,EAAEF,oBAAoB;IACrE;IAEA,MAAMQ,QAAQC,GAAG,CACfnB,wBAAwBoB,GAAG,CAAC,CAAC,EAAEC,UAAU,EAAE,GACzCxB,IAAIyB,MAAM,CAACvB,KAAKwB,IAAI,CAACb,oBAAoBW;IAG7C,MAAMxB,IAAI2B,EAAE,CAACf,oBAAoB;QAAEgB,OAAO;QAAMX,WAAW;IAAK;IAChE,MAAMI,QAAQC,GAAG,CACfnB,wBAAwBoB,GAAG,CAAC,OAAO,EAAEM,WAAW,EAAEC,YAAY,EAAEN,UAAU,EAAE;QAC1E,MAAMO,iBAAiB7B,KAAKwB,IAAI,CAACd,oBAAoBiB,aAAaC;QAElE,MAAM9B,IAAIgC,KAAK,CAAC9B,KAAKI,OAAO,CAACyB,iBAAiB;YAAEd,WAAW;QAAK;QAChE,MAAMjB,IAAIiC,QAAQ,CAAC/B,KAAKwB,IAAI,CAACb,oBAAoBW,aAAaO;IAChE;AAEJ"}
|
|
@@ -3,11 +3,17 @@
|
|
|
3
3
|
import config from '@payload-config'
|
|
4
4
|
import '@payloadcms/next/css'
|
|
5
5
|
import type { ServerFunctionClient } from 'payload'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
generatePayloadViewport,
|
|
8
|
+
handleServerFunctions,
|
|
9
|
+
RootLayout,
|
|
10
|
+
} from '@payloadcms/next/layouts'
|
|
7
11
|
import React from 'react'
|
|
8
12
|
|
|
9
13
|
import { importMap } from './admin/importMap.js'
|
|
10
|
-
import './custom.
|
|
14
|
+
import './custom.css'
|
|
15
|
+
|
|
16
|
+
export const generateViewport = generatePayloadViewport
|
|
11
17
|
|
|
12
18
|
type Args = {
|
|
13
19
|
children: React.ReactNode
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { payloadAdminSplatRoute } from '@payloadcms/tanstack-start/client'
|
|
2
|
+
import { createFileRoute } from '@tanstack/react-router'
|
|
3
|
+
|
|
4
|
+
import { loadAdminPageRSC } from './server.functions.js'
|
|
5
|
+
|
|
6
|
+
export const Route = createFileRoute('/_payload/admin/$')(
|
|
7
|
+
payloadAdminSplatRoute({ load: loadAdminPageRSC }),
|
|
8
|
+
)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { payloadAdminIndexRoute } from '@payloadcms/tanstack-start/client'
|
|
2
|
+
import { createFileRoute } from '@tanstack/react-router'
|
|
3
|
+
|
|
4
|
+
import { loadAdminPageRSC } from './server.functions.js'
|
|
5
|
+
|
|
6
|
+
export const Route = createFileRoute('/_payload/admin/')(
|
|
7
|
+
payloadAdminIndexRoute({ load: loadAdminPageRSC }),
|
|
8
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { payloadApiHandlers } from '@payloadcms/tanstack-start/server'
|
|
2
|
+
import { createFileRoute } from '@tanstack/react-router'
|
|
3
|
+
|
|
4
|
+
export const Route = createFileRoute('/_payload/api/$')({
|
|
5
|
+
server: {
|
|
6
|
+
handlers: payloadApiHandlers({
|
|
7
|
+
getConfig: async () => (await import('@payload-config')).default,
|
|
8
|
+
}),
|
|
9
|
+
},
|
|
10
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NullField as NullField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
2
|
+
import { HierarchyField as HierarchyField_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
3
|
+
import { HierarchyButton as HierarchyButton_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
4
|
+
import { FolderIcon as FolderIcon_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
5
|
+
import { HierarchySidebarTabServer as HierarchySidebarTabServer_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
6
|
+
import { TagIcon as TagIcon_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
7
|
+
import { CollectionCards as CollectionCards_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
8
|
+
import { CollectionQueryWidget as CollectionQueryWidget_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
9
|
+
import { QueryPresetsWhereField as QueryPresetsWhereField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
10
|
+
import { CollectionQuerySortField as CollectionQuerySortField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
11
|
+
import { RecentlyViewedWidget as RecentlyViewedWidget_ab83ff7e88da8d3530831f296ec4756a } from '@payloadcms/ui/rsc'
|
|
12
|
+
import { RecentlyViewedCollectionsField as RecentlyViewedCollectionsField_3817bf644402e67bfe6577f60ef982de } from '@payloadcms/ui'
|
|
13
|
+
|
|
14
|
+
/** @type import('payload').ImportMap */
|
|
15
|
+
export const importMap = {
|
|
16
|
+
'@payloadcms/ui#NullField': NullField_3817bf644402e67bfe6577f60ef982de,
|
|
17
|
+
'@payloadcms/ui/rsc#HierarchyField': HierarchyField_ab83ff7e88da8d3530831f296ec4756a,
|
|
18
|
+
'@payloadcms/ui/rsc#HierarchyButton': HierarchyButton_ab83ff7e88da8d3530831f296ec4756a,
|
|
19
|
+
'@payloadcms/ui#FolderIcon': FolderIcon_3817bf644402e67bfe6577f60ef982de,
|
|
20
|
+
'@payloadcms/ui/rsc#HierarchySidebarTabServer':
|
|
21
|
+
HierarchySidebarTabServer_ab83ff7e88da8d3530831f296ec4756a,
|
|
22
|
+
'@payloadcms/ui#TagIcon': TagIcon_3817bf644402e67bfe6577f60ef982de,
|
|
23
|
+
'@payloadcms/ui/rsc#CollectionCards': CollectionCards_ab83ff7e88da8d3530831f296ec4756a,
|
|
24
|
+
'@payloadcms/ui/rsc#CollectionQueryWidget':
|
|
25
|
+
CollectionQueryWidget_ab83ff7e88da8d3530831f296ec4756a,
|
|
26
|
+
'@payloadcms/ui#QueryPresetsWhereField': QueryPresetsWhereField_3817bf644402e67bfe6577f60ef982de,
|
|
27
|
+
'@payloadcms/ui#CollectionQuerySortField':
|
|
28
|
+
CollectionQuerySortField_3817bf644402e67bfe6577f60ef982de,
|
|
29
|
+
'@payloadcms/ui/rsc#RecentlyViewedWidget': RecentlyViewedWidget_ab83ff7e88da8d3530831f296ec4756a,
|
|
30
|
+
'@payloadcms/ui#RecentlyViewedCollectionsField':
|
|
31
|
+
RecentlyViewedCollectionsField_3817bf644402e67bfe6577f60ef982de,
|
|
32
|
+
}
|