create-payload-app 3.0.0-alpha.59 → 3.0.0-alpha.60
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/cli.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/configure-payload-config.js +12 -27
- package/dist/lib/configure-payload-config.js.map +1 -1
- package/dist/lib/create-project.js +32 -96
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/create-project.spec.js +24 -33
- package/dist/lib/create-project.spec.js.map +1 -1
- package/dist/lib/generate-secret.js +3 -13
- package/dist/lib/generate-secret.js.map +1 -1
- package/dist/lib/init-next.js +40 -104
- package/dist/lib/init-next.js.map +1 -1
- package/dist/lib/packages.js +1 -11
- package/dist/lib/packages.js.map +1 -1
- package/dist/lib/parse-project-name.js +8 -64
- package/dist/lib/parse-project-name.js.map +1 -1
- package/dist/lib/parse-template.js +4 -55
- package/dist/lib/parse-template.js.map +1 -1
- package/dist/lib/select-db.js +8 -64
- package/dist/lib/select-db.js.map +1 -1
- package/dist/lib/templates.js +5 -23
- package/dist/lib/templates.js.map +1 -1
- package/dist/lib/wrap-next-config.js +18 -41
- package/dist/lib/wrap-next-config.js.map +1 -1
- package/dist/lib/wrap-next-config.spec.js +10 -55
- package/dist/lib/wrap-next-config.spec.js.map +1 -1
- package/dist/lib/write-env-file.js +11 -26
- package/dist/lib/write-env-file.js.map +1 -1
- package/dist/main.js +60 -115
- package/dist/main.js.map +1 -1
- package/dist/scripts/pack-template-files.js +15 -24
- package/dist/scripts/pack-template-files.js.map +1 -1
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/dist/utils/copy-recursive-sync.js +11 -24
- package/dist/utils/copy-recursive-sync.js.map +1 -1
- package/dist/utils/log.js +12 -85
- package/dist/utils/log.js.map +1 -1
- package/dist/utils/messages.js +20 -55
- package/dist/utils/messages.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/init-next.js
CHANGED
@@ -1,84 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
});
|
19
|
-
const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
|
20
|
-
const _commentjson = require("comment-json");
|
21
|
-
const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
|
22
|
-
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
23
|
-
const _globby = /*#__PURE__*/ _interop_require_default(require("globby"));
|
24
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
25
|
-
const _util = require("util");
|
26
|
-
const _nodeurl = require("node:url");
|
27
|
-
const _copyrecursivesync = require("../utils/copy-recursive-sync.js");
|
28
|
-
const _log = require("../utils/log.js");
|
29
|
-
const _messages = require("../utils/messages.js");
|
30
|
-
const _wrapnextconfig = require("./wrap-next-config.js");
|
31
|
-
function _interop_require_default(obj) {
|
32
|
-
return obj && obj.__esModule ? obj : {
|
33
|
-
default: obj
|
34
|
-
};
|
35
|
-
}
|
36
|
-
function _getRequireWildcardCache(nodeInterop) {
|
37
|
-
if (typeof WeakMap !== "function") return null;
|
38
|
-
var cacheBabelInterop = new WeakMap();
|
39
|
-
var cacheNodeInterop = new WeakMap();
|
40
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
41
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
42
|
-
})(nodeInterop);
|
43
|
-
}
|
44
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
45
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
46
|
-
return obj;
|
47
|
-
}
|
48
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
49
|
-
return {
|
50
|
-
default: obj
|
51
|
-
};
|
52
|
-
}
|
53
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
54
|
-
if (cache && cache.has(obj)) {
|
55
|
-
return cache.get(obj);
|
56
|
-
}
|
57
|
-
var newObj = {
|
58
|
-
__proto__: null
|
59
|
-
};
|
60
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
61
|
-
for(var key in obj){
|
62
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
63
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
64
|
-
if (desc && (desc.get || desc.set)) {
|
65
|
-
Object.defineProperty(newObj, key, desc);
|
66
|
-
} else {
|
67
|
-
newObj[key] = obj[key];
|
68
|
-
}
|
69
|
-
}
|
70
|
-
}
|
71
|
-
newObj.default = obj;
|
72
|
-
if (cache) {
|
73
|
-
cache.set(obj, newObj);
|
74
|
-
}
|
75
|
-
return newObj;
|
76
|
-
}
|
77
|
-
const readFile = (0, _util.promisify)(_fs.default.readFile);
|
78
|
-
const writeFile = (0, _util.promisify)(_fs.default.writeFile);
|
79
|
-
const filename = (0, _nodeurl.fileURLToPath)(require("url").pathToFileURL(__filename).toString());
|
80
|
-
const dirname = _path.default.dirname(filename);
|
81
|
-
async function initNext(args) {
|
1
|
+
import * as p from '@clack/prompts';
|
2
|
+
import { parse, stringify } from 'comment-json';
|
3
|
+
import execa from 'execa';
|
4
|
+
import fs from 'fs';
|
5
|
+
import globby from 'globby';
|
6
|
+
import path from 'path';
|
7
|
+
import { promisify } from 'util';
|
8
|
+
const readFile = promisify(fs.readFile);
|
9
|
+
const writeFile = promisify(fs.writeFile);
|
10
|
+
const filename = fileURLToPath(import.meta.url);
|
11
|
+
const dirname = path.dirname(filename);
|
12
|
+
import { fileURLToPath } from 'node:url';
|
13
|
+
import { copyRecursiveSync } from '../utils/copy-recursive-sync.js';
|
14
|
+
import { debug as origDebug, warning } from '../utils/log.js';
|
15
|
+
import { moveMessage } from '../utils/messages.js';
|
16
|
+
import { wrapNextConfig } from './wrap-next-config.js';
|
17
|
+
export async function initNext(args) {
|
82
18
|
const { dbType: dbType, packageManager, projectDir } = args;
|
83
19
|
const nextAppDetails = args.nextAppDetails || await getNextAppDetails(projectDir);
|
84
20
|
const { hasTopLevelLayout, isSrcDir, nextAppDir } = nextAppDetails || await getNextAppDetails(projectDir);
|
@@ -91,7 +27,7 @@ async function initNext(args) {
|
|
91
27
|
}
|
92
28
|
if (hasTopLevelLayout) {
|
93
29
|
// Output directions for user to move all files from app to top-level directory named `(app)`
|
94
|
-
|
30
|
+
p.log.warn(moveMessage({
|
95
31
|
nextAppDir,
|
96
32
|
projectDir
|
97
33
|
}));
|
@@ -102,7 +38,7 @@ async function initNext(args) {
|
|
102
38
|
success: false
|
103
39
|
};
|
104
40
|
}
|
105
|
-
const installSpinner =
|
41
|
+
const installSpinner = p.spinner();
|
106
42
|
installSpinner.start('Installing Payload and dependencies...');
|
107
43
|
const configurationResult = installAndConfigurePayload({
|
108
44
|
...args,
|
@@ -138,11 +74,11 @@ async function initNext(args) {
|
|
138
74
|
};
|
139
75
|
}
|
140
76
|
async function addPayloadConfigToTsConfig(projectDir, isSrcDir) {
|
141
|
-
const tsConfigPath =
|
77
|
+
const tsConfigPath = path.resolve(projectDir, 'tsconfig.json');
|
142
78
|
const userTsConfigContent = await readFile(tsConfigPath, {
|
143
79
|
encoding: 'utf8'
|
144
80
|
});
|
145
|
-
const userTsConfig =
|
81
|
+
const userTsConfig = parse(userTsConfigContent);
|
146
82
|
if (!userTsConfig.compilerOptions && !('extends' in userTsConfig)) {
|
147
83
|
userTsConfig.compilerOptions = {};
|
148
84
|
}
|
@@ -153,7 +89,7 @@ async function addPayloadConfigToTsConfig(projectDir, isSrcDir) {
|
|
153
89
|
`./${isSrcDir ? 'src/' : ''}payload.config.ts`
|
154
90
|
]
|
155
91
|
};
|
156
|
-
await writeFile(tsConfigPath,
|
92
|
+
await writeFile(tsConfigPath, stringify(userTsConfig, null, 2), {
|
157
93
|
encoding: 'utf8'
|
158
94
|
});
|
159
95
|
}
|
@@ -167,17 +103,17 @@ function installAndConfigurePayload(args) {
|
|
167
103
|
};
|
168
104
|
}
|
169
105
|
const logDebug = (message)=>{
|
170
|
-
if (debug) (
|
106
|
+
if (debug) origDebug(message);
|
171
107
|
};
|
172
|
-
if (!
|
108
|
+
if (!fs.existsSync(projectDir)) {
|
173
109
|
return {
|
174
110
|
reason: `Could not find specified project directory at ${projectDir}`,
|
175
111
|
success: false
|
176
112
|
};
|
177
113
|
}
|
178
|
-
const templateFilesPath = dirname.endsWith('dist') || useDistFiles ?
|
114
|
+
const templateFilesPath = dirname.endsWith('dist') || useDistFiles ? path.resolve(dirname, '../..', 'dist/template') : path.resolve(dirname, '../../../../templates/blank-3.0');
|
179
115
|
logDebug(`Using template files from: ${templateFilesPath}`);
|
180
|
-
if (!
|
116
|
+
if (!fs.existsSync(templateFilesPath)) {
|
181
117
|
return {
|
182
118
|
reason: `Could not find template source files from ${templateFilesPath}`,
|
183
119
|
success: false
|
@@ -186,20 +122,20 @@ function installAndConfigurePayload(args) {
|
|
186
122
|
logDebug('Found template source files');
|
187
123
|
}
|
188
124
|
logDebug(`Copying template files from ${templateFilesPath} to ${nextAppDir}`);
|
189
|
-
const templateSrcDir =
|
125
|
+
const templateSrcDir = path.resolve(templateFilesPath, isSrcDir ? '' : 'src');
|
190
126
|
logDebug(`templateSrcDir: ${templateSrcDir}`);
|
191
127
|
logDebug(`nextAppDir: ${nextAppDir}`);
|
192
128
|
logDebug(`projectDir: ${projectDir}`);
|
193
129
|
logDebug(`nextConfigPath: ${nextConfigPath}`);
|
194
|
-
logDebug(`isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${
|
130
|
+
logDebug(`isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${path.dirname(nextConfigPath)}`);
|
195
131
|
// This is a little clunky and needs to account for isSrcDir
|
196
|
-
|
132
|
+
copyRecursiveSync(templateSrcDir, path.dirname(nextConfigPath), debug);
|
197
133
|
// Wrap next.config.js with withPayload
|
198
|
-
|
134
|
+
wrapNextConfig({
|
199
135
|
nextConfigPath
|
200
136
|
});
|
201
137
|
return {
|
202
|
-
payloadConfigPath:
|
138
|
+
payloadConfigPath: path.resolve(nextAppDir, '../payload.config.ts'),
|
203
139
|
success: true
|
204
140
|
};
|
205
141
|
}
|
@@ -214,7 +150,7 @@ async function installDeps(projectDir, packageManager, dbType) {
|
|
214
150
|
switch(packageManager){
|
215
151
|
case 'npm':
|
216
152
|
{
|
217
|
-
({ exitCode } = await (
|
153
|
+
({ exitCode } = await execa('npm', [
|
218
154
|
'install',
|
219
155
|
'--save',
|
220
156
|
...packagesToInstall
|
@@ -226,7 +162,7 @@ async function installDeps(projectDir, packageManager, dbType) {
|
|
226
162
|
case 'yarn':
|
227
163
|
case 'pnpm':
|
228
164
|
{
|
229
|
-
({ exitCode } = await (
|
165
|
+
({ exitCode } = await execa(packageManager, [
|
230
166
|
'add',
|
231
167
|
...packagesToInstall
|
232
168
|
], {
|
@@ -236,8 +172,8 @@ async function installDeps(projectDir, packageManager, dbType) {
|
|
236
172
|
}
|
237
173
|
case 'bun':
|
238
174
|
{
|
239
|
-
|
240
|
-
({ exitCode } = await (
|
175
|
+
warning('Bun support is untested.');
|
176
|
+
({ exitCode } = await execa('bun', [
|
241
177
|
'add',
|
242
178
|
...packagesToInstall
|
243
179
|
], {
|
@@ -250,9 +186,9 @@ async function installDeps(projectDir, packageManager, dbType) {
|
|
250
186
|
success: exitCode === 0
|
251
187
|
};
|
252
188
|
}
|
253
|
-
async function getNextAppDetails(projectDir) {
|
254
|
-
const isSrcDir =
|
255
|
-
const nextConfigPath = (await (
|
189
|
+
export async function getNextAppDetails(projectDir) {
|
190
|
+
const isSrcDir = fs.existsSync(path.resolve(projectDir, 'src'));
|
191
|
+
const nextConfigPath = (await globby('next.config.*js', {
|
256
192
|
absolute: true,
|
257
193
|
cwd: projectDir
|
258
194
|
}))?.[0];
|
@@ -263,7 +199,7 @@ async function getNextAppDetails(projectDir) {
|
|
263
199
|
nextConfigPath: undefined
|
264
200
|
};
|
265
201
|
}
|
266
|
-
let nextAppDir = (await (
|
202
|
+
let nextAppDir = (await globby([
|
267
203
|
'**/app'
|
268
204
|
], {
|
269
205
|
absolute: true,
|
@@ -273,7 +209,7 @@ async function getNextAppDetails(projectDir) {
|
|
273
209
|
if (!nextAppDir || nextAppDir.length === 0) {
|
274
210
|
nextAppDir = undefined;
|
275
211
|
}
|
276
|
-
const hasTopLevelLayout = nextAppDir ?
|
212
|
+
const hasTopLevelLayout = nextAppDir ? fs.existsSync(path.resolve(nextAppDir, 'layout.tsx')) : false;
|
277
213
|
return {
|
278
214
|
hasTopLevelLayout,
|
279
215
|
isSrcDir,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import type { CompilerOptions } from 'typescript'\n\nimport * as p from '@clack/prompts'\nimport { parse, stringify } from 'comment-json'\nimport execa from 'execa'\nimport fs from 'fs'\nimport globby from 'globby'\nimport path from 'path'\nimport { promisify } from 'util'\n\nconst readFile = promisify(fs.readFile)\nconst writeFile = promisify(fs.writeFile)\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { debug as origDebug, warning } from '../utils/log.js'\nimport { moveMessage } from '../utils/messages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\ntype InitNextArgs = Pick<CliArgs, '--debug'> & {\n dbType: DbType\n nextAppDetails?: NextAppDetails\n packageManager: PackageManager\n projectDir: string\n useDistFiles?: boolean\n}\n\ntype InitNextResult =\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\n\nexport async function initNext(args: InitNextArgs): Promise<InitNextResult> {\n const { dbType: dbType, packageManager, projectDir } = args\n\n const nextAppDetails = args.nextAppDetails || (await getNextAppDetails(projectDir))\n\n const { hasTopLevelLayout, isSrcDir, nextAppDir } =\n nextAppDetails || (await getNextAppDetails(projectDir))\n\n if (!nextAppDir) {\n return { isSrcDir, reason: `Could not find app directory in ${projectDir}`, success: false }\n }\n\n if (hasTopLevelLayout) {\n // Output directions for user to move all files from app to top-level directory named `(app)`\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n return {\n isSrcDir,\n nextAppDir,\n reason: 'Found existing layout.tsx in app directory',\n success: false,\n }\n }\n\n const installSpinner = p.spinner()\n installSpinner.start('Installing Payload and dependencies...')\n\n const configurationResult = installAndConfigurePayload({\n ...args,\n nextAppDetails,\n useDistFiles: true, // Requires running 'pnpm pack-template-files' in cpa\n })\n\n if (configurationResult.success === false) {\n installSpinner.stop(configurationResult.reason, 1)\n return { ...configurationResult, isSrcDir, success: false }\n }\n\n const { success: installSuccess } = await installDeps(projectDir, packageManager, dbType)\n if (!installSuccess) {\n installSpinner.stop('Failed to install dependencies', 1)\n return {\n ...configurationResult,\n isSrcDir,\n reason: 'Failed to install dependencies',\n success: false,\n }\n }\n\n // Add `@payload-config` to tsconfig.json `paths`\n await addPayloadConfigToTsConfig(projectDir, isSrcDir)\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function addPayloadConfigToTsConfig(projectDir: string, isSrcDir: boolean) {\n const tsConfigPath = path.resolve(projectDir, 'tsconfig.json')\n const userTsConfigContent = await readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = parse(userTsConfigContent) as {\n compilerOptions?: CompilerOptions\n }\n if (!userTsConfig.compilerOptions && !('extends' in userTsConfig)) {\n userTsConfig.compilerOptions = {}\n }\n\n if (\n !userTsConfig.compilerOptions?.paths?.['@payload-config'] &&\n userTsConfig.compilerOptions?.paths\n ) {\n userTsConfig.compilerOptions.paths = {\n ...(userTsConfig.compilerOptions.paths || {}),\n '@payload-config': [`./${isSrcDir ? 'src/' : ''}payload.config.ts`],\n }\n await writeFile(tsConfigPath, stringify(userTsConfig, null, 2), { encoding: 'utf8' })\n }\n}\n\nfunction installAndConfigurePayload(\n args: InitNextArgs & { nextAppDetails: NextAppDetails; useDistFiles?: boolean },\n):\n | { payloadConfigPath: string; success: true }\n | { payloadConfigPath?: string; reason: string; success: false } {\n const {\n '--debug': debug,\n nextAppDetails: { isSrcDir, nextAppDir, nextConfigPath } = {},\n projectDir,\n useDistFiles,\n } = args\n\n if (!nextAppDir || !nextConfigPath) {\n return {\n reason: 'Could not find app directory or next.config.js',\n success: false,\n }\n }\n\n const logDebug = (message: string) => {\n if (debug) origDebug(message)\n }\n\n if (!fs.existsSync(projectDir)) {\n return {\n reason: `Could not find specified project directory at ${projectDir}`,\n success: false,\n }\n }\n\n const templateFilesPath =\n dirname.endsWith('dist') || useDistFiles\n ? path.resolve(dirname, '../..', 'dist/template')\n : path.resolve(dirname, '../../../../templates/blank-3.0')\n\n logDebug(`Using template files from: ${templateFilesPath}`)\n\n if (!fs.existsSync(templateFilesPath)) {\n return {\n reason: `Could not find template source files from ${templateFilesPath}`,\n success: false,\n }\n } else {\n logDebug('Found template source files')\n }\n\n logDebug(`Copying template files from ${templateFilesPath} to ${nextAppDir}`)\n\n const templateSrcDir = path.resolve(templateFilesPath, isSrcDir ? '' : 'src')\n\n logDebug(`templateSrcDir: ${templateSrcDir}`)\n logDebug(`nextAppDir: ${nextAppDir}`)\n logDebug(`projectDir: ${projectDir}`)\n logDebug(`nextConfigPath: ${nextConfigPath}`)\n\n logDebug(\n `isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${path.dirname(nextConfigPath)}`,\n )\n\n // This is a little clunky and needs to account for isSrcDir\n copyRecursiveSync(templateSrcDir, path.dirname(nextConfigPath), debug)\n\n // Wrap next.config.js with withPayload\n wrapNextConfig({ nextConfigPath })\n\n return {\n payloadConfigPath: path.resolve(nextAppDir, '../payload.config.ts'),\n success: true,\n }\n}\n\nasync function installDeps(projectDir: string, packageManager: PackageManager, dbType: DbType) {\n const packagesToInstall = ['payload', '@payloadcms/next', '@payloadcms/richtext-lexical'].map(\n (pkg) => `${pkg}@alpha`,\n )\n\n packagesToInstall.push(`@payloadcms/db-${dbType}@alpha`)\n\n let exitCode = 0\n switch (packageManager) {\n case 'npm': {\n ;({ exitCode } = await execa('npm', ['install', '--save', ...packagesToInstall], {\n cwd: projectDir,\n }))\n break\n }\n case 'yarn':\n case 'pnpm': {\n ;({ exitCode } = await execa(packageManager, ['add', ...packagesToInstall], {\n cwd: projectDir,\n }))\n break\n }\n case 'bun': {\n warning('Bun support is untested.')\n ;({ exitCode } = await execa('bun', ['add', ...packagesToInstall], { cwd: projectDir }))\n break\n }\n }\n\n return { success: exitCode === 0 }\n}\n\ntype NextAppDetails = {\n hasTopLevelLayout: boolean\n isSrcDir: boolean\n nextAppDir?: string\n nextConfigPath?: string\n}\n\nexport async function getNextAppDetails(projectDir: string): Promise<NextAppDetails> {\n const isSrcDir = fs.existsSync(path.resolve(projectDir, 'src'))\n\n const nextConfigPath: string | undefined = (\n await globby('next.config.*js', { absolute: true, cwd: projectDir })\n )?.[0]\n if (!nextConfigPath || nextConfigPath.length === 0) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n nextConfigPath: undefined,\n }\n }\n\n let nextAppDir: string | undefined = (\n await globby(['**/app'], {\n absolute: true,\n cwd: projectDir,\n onlyDirectories: true,\n })\n )?.[0]\n\n if (!nextAppDir || nextAppDir.length === 0) {\n nextAppDir = undefined\n }\n\n const hasTopLevelLayout = nextAppDir\n ? fs.existsSync(path.resolve(nextAppDir, 'layout.tsx'))\n : false\n\n return { hasTopLevelLayout, isSrcDir, nextAppDir, nextConfigPath }\n}\n"],"names":["getNextAppDetails","initNext","readFile","promisify","fs","writeFile","filename","fileURLToPath","dirname","path","args","dbType","packageManager","projectDir","nextAppDetails","hasTopLevelLayout","isSrcDir","nextAppDir","reason","success","p","log","warn","moveMessage","installSpinner","spinner","start","configurationResult","installAndConfigurePayload","useDistFiles","stop","installSuccess","installDeps","addPayloadConfigToTsConfig","tsConfigPath","resolve","userTsConfigContent","encoding","userTsConfig","parse","compilerOptions","paths","stringify","debug","nextConfigPath","logDebug","message","origDebug","existsSync","templateFilesPath","endsWith","templateSrcDir","copyRecursiveSync","wrapNextConfig","payloadConfigPath","packagesToInstall","map","pkg","push","exitCode","execa","cwd","warning","globby","absolute","length","undefined","onlyDirectories"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["../../src/lib/init-next.ts"],"sourcesContent":["import type { CompilerOptions } from 'typescript'\n\nimport * as p from '@clack/prompts'\nimport { parse, stringify } from 'comment-json'\nimport execa from 'execa'\nimport fs from 'fs'\nimport globby from 'globby'\nimport path from 'path'\nimport { promisify } from 'util'\n\nconst readFile = promisify(fs.readFile)\nconst writeFile = promisify(fs.writeFile)\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nimport { fileURLToPath } from 'node:url'\n\nimport type { CliArgs, DbType, PackageManager } from '../types.js'\n\nimport { copyRecursiveSync } from '../utils/copy-recursive-sync.js'\nimport { debug as origDebug, warning } from '../utils/log.js'\nimport { moveMessage } from '../utils/messages.js'\nimport { wrapNextConfig } from './wrap-next-config.js'\n\ntype InitNextArgs = Pick<CliArgs, '--debug'> & {\n dbType: DbType\n nextAppDetails?: NextAppDetails\n packageManager: PackageManager\n projectDir: string\n useDistFiles?: boolean\n}\n\ntype InitNextResult =\n | {\n isSrcDir: boolean\n nextAppDir: string\n payloadConfigPath: string\n success: true\n }\n | { isSrcDir: boolean; nextAppDir?: string; reason: string; success: false }\n\nexport async function initNext(args: InitNextArgs): Promise<InitNextResult> {\n const { dbType: dbType, packageManager, projectDir } = args\n\n const nextAppDetails = args.nextAppDetails || (await getNextAppDetails(projectDir))\n\n const { hasTopLevelLayout, isSrcDir, nextAppDir } =\n nextAppDetails || (await getNextAppDetails(projectDir))\n\n if (!nextAppDir) {\n return { isSrcDir, reason: `Could not find app directory in ${projectDir}`, success: false }\n }\n\n if (hasTopLevelLayout) {\n // Output directions for user to move all files from app to top-level directory named `(app)`\n p.log.warn(moveMessage({ nextAppDir, projectDir }))\n return {\n isSrcDir,\n nextAppDir,\n reason: 'Found existing layout.tsx in app directory',\n success: false,\n }\n }\n\n const installSpinner = p.spinner()\n installSpinner.start('Installing Payload and dependencies...')\n\n const configurationResult = installAndConfigurePayload({\n ...args,\n nextAppDetails,\n useDistFiles: true, // Requires running 'pnpm pack-template-files' in cpa\n })\n\n if (configurationResult.success === false) {\n installSpinner.stop(configurationResult.reason, 1)\n return { ...configurationResult, isSrcDir, success: false }\n }\n\n const { success: installSuccess } = await installDeps(projectDir, packageManager, dbType)\n if (!installSuccess) {\n installSpinner.stop('Failed to install dependencies', 1)\n return {\n ...configurationResult,\n isSrcDir,\n reason: 'Failed to install dependencies',\n success: false,\n }\n }\n\n // Add `@payload-config` to tsconfig.json `paths`\n await addPayloadConfigToTsConfig(projectDir, isSrcDir)\n installSpinner.stop('Successfully installed Payload and dependencies')\n return { ...configurationResult, isSrcDir, nextAppDir, success: true }\n}\n\nasync function addPayloadConfigToTsConfig(projectDir: string, isSrcDir: boolean) {\n const tsConfigPath = path.resolve(projectDir, 'tsconfig.json')\n const userTsConfigContent = await readFile(tsConfigPath, {\n encoding: 'utf8',\n })\n const userTsConfig = parse(userTsConfigContent) as {\n compilerOptions?: CompilerOptions\n }\n if (!userTsConfig.compilerOptions && !('extends' in userTsConfig)) {\n userTsConfig.compilerOptions = {}\n }\n\n if (\n !userTsConfig.compilerOptions?.paths?.['@payload-config'] &&\n userTsConfig.compilerOptions?.paths\n ) {\n userTsConfig.compilerOptions.paths = {\n ...(userTsConfig.compilerOptions.paths || {}),\n '@payload-config': [`./${isSrcDir ? 'src/' : ''}payload.config.ts`],\n }\n await writeFile(tsConfigPath, stringify(userTsConfig, null, 2), { encoding: 'utf8' })\n }\n}\n\nfunction installAndConfigurePayload(\n args: InitNextArgs & { nextAppDetails: NextAppDetails; useDistFiles?: boolean },\n):\n | { payloadConfigPath: string; success: true }\n | { payloadConfigPath?: string; reason: string; success: false } {\n const {\n '--debug': debug,\n nextAppDetails: { isSrcDir, nextAppDir, nextConfigPath } = {},\n projectDir,\n useDistFiles,\n } = args\n\n if (!nextAppDir || !nextConfigPath) {\n return {\n reason: 'Could not find app directory or next.config.js',\n success: false,\n }\n }\n\n const logDebug = (message: string) => {\n if (debug) origDebug(message)\n }\n\n if (!fs.existsSync(projectDir)) {\n return {\n reason: `Could not find specified project directory at ${projectDir}`,\n success: false,\n }\n }\n\n const templateFilesPath =\n dirname.endsWith('dist') || useDistFiles\n ? path.resolve(dirname, '../..', 'dist/template')\n : path.resolve(dirname, '../../../../templates/blank-3.0')\n\n logDebug(`Using template files from: ${templateFilesPath}`)\n\n if (!fs.existsSync(templateFilesPath)) {\n return {\n reason: `Could not find template source files from ${templateFilesPath}`,\n success: false,\n }\n } else {\n logDebug('Found template source files')\n }\n\n logDebug(`Copying template files from ${templateFilesPath} to ${nextAppDir}`)\n\n const templateSrcDir = path.resolve(templateFilesPath, isSrcDir ? '' : 'src')\n\n logDebug(`templateSrcDir: ${templateSrcDir}`)\n logDebug(`nextAppDir: ${nextAppDir}`)\n logDebug(`projectDir: ${projectDir}`)\n logDebug(`nextConfigPath: ${nextConfigPath}`)\n\n logDebug(\n `isSrcDir: ${isSrcDir}. source: ${templateSrcDir}. dest: ${path.dirname(nextConfigPath)}`,\n )\n\n // This is a little clunky and needs to account for isSrcDir\n copyRecursiveSync(templateSrcDir, path.dirname(nextConfigPath), debug)\n\n // Wrap next.config.js with withPayload\n wrapNextConfig({ nextConfigPath })\n\n return {\n payloadConfigPath: path.resolve(nextAppDir, '../payload.config.ts'),\n success: true,\n }\n}\n\nasync function installDeps(projectDir: string, packageManager: PackageManager, dbType: DbType) {\n const packagesToInstall = ['payload', '@payloadcms/next', '@payloadcms/richtext-lexical'].map(\n (pkg) => `${pkg}@alpha`,\n )\n\n packagesToInstall.push(`@payloadcms/db-${dbType}@alpha`)\n\n let exitCode = 0\n switch (packageManager) {\n case 'npm': {\n ;({ exitCode } = await execa('npm', ['install', '--save', ...packagesToInstall], {\n cwd: projectDir,\n }))\n break\n }\n case 'yarn':\n case 'pnpm': {\n ;({ exitCode } = await execa(packageManager, ['add', ...packagesToInstall], {\n cwd: projectDir,\n }))\n break\n }\n case 'bun': {\n warning('Bun support is untested.')\n ;({ exitCode } = await execa('bun', ['add', ...packagesToInstall], { cwd: projectDir }))\n break\n }\n }\n\n return { success: exitCode === 0 }\n}\n\ntype NextAppDetails = {\n hasTopLevelLayout: boolean\n isSrcDir: boolean\n nextAppDir?: string\n nextConfigPath?: string\n}\n\nexport async function getNextAppDetails(projectDir: string): Promise<NextAppDetails> {\n const isSrcDir = fs.existsSync(path.resolve(projectDir, 'src'))\n\n const nextConfigPath: string | undefined = (\n await globby('next.config.*js', { absolute: true, cwd: projectDir })\n )?.[0]\n if (!nextConfigPath || nextConfigPath.length === 0) {\n return {\n hasTopLevelLayout: false,\n isSrcDir,\n nextConfigPath: undefined,\n }\n }\n\n let nextAppDir: string | undefined = (\n await globby(['**/app'], {\n absolute: true,\n cwd: projectDir,\n onlyDirectories: true,\n })\n )?.[0]\n\n if (!nextAppDir || nextAppDir.length === 0) {\n nextAppDir = undefined\n }\n\n const hasTopLevelLayout = nextAppDir\n ? fs.existsSync(path.resolve(nextAppDir, 'layout.tsx'))\n : false\n\n return { hasTopLevelLayout, isSrcDir, nextAppDir, nextConfigPath }\n}\n"],"names":["p","parse","stringify","execa","fs","globby","path","promisify","readFile","writeFile","filename","fileURLToPath","url","dirname","copyRecursiveSync","debug","origDebug","warning","moveMessage","wrapNextConfig","initNext","args","dbType","packageManager","projectDir","nextAppDetails","getNextAppDetails","hasTopLevelLayout","isSrcDir","nextAppDir","reason","success","log","warn","installSpinner","spinner","start","configurationResult","installAndConfigurePayload","useDistFiles","stop","installSuccess","installDeps","addPayloadConfigToTsConfig","tsConfigPath","resolve","userTsConfigContent","encoding","userTsConfig","compilerOptions","paths","nextConfigPath","logDebug","message","existsSync","templateFilesPath","endsWith","templateSrcDir","payloadConfigPath","packagesToInstall","map","pkg","push","exitCode","cwd","absolute","length","undefined","onlyDirectories"],"mappings":"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"}
|
package/dist/lib/packages.js
CHANGED
@@ -1,13 +1,3 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
Object.defineProperty(exports, "dbReplacements", {
|
6
|
-
enumerable: true,
|
7
|
-
get: function() {
|
8
|
-
return dbReplacements;
|
9
|
-
}
|
10
|
-
});
|
11
1
|
const mongodbReplacement = {
|
12
2
|
importReplacement: "import { mongooseAdapter } from '@payloadcms/db-mongodb'",
|
13
3
|
packageName: '@payloadcms/db-mongodb',
|
@@ -29,7 +19,7 @@ const postgresReplacement = {
|
|
29
19
|
importReplacement: "import { postgresAdapter } from '@payloadcms/db-postgres'",
|
30
20
|
packageName: '@payloadcms/db-postgres'
|
31
21
|
};
|
32
|
-
const dbReplacements = {
|
22
|
+
export const dbReplacements = {
|
33
23
|
mongodb: mongodbReplacement,
|
34
24
|
postgres: postgresReplacement
|
35
25
|
};
|
package/dist/lib/packages.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/packages.ts"],"sourcesContent":["import type { DbType } from '../types.js'\n\ntype DbAdapterReplacement = {\n configReplacement: string[]\n importReplacement: string\n packageName: string\n}\n\nconst mongodbReplacement: DbAdapterReplacement = {\n importReplacement: \"import { mongooseAdapter } from '@payloadcms/db-mongodb'\",\n packageName: '@payloadcms/db-mongodb',\n // Replacement between `// database-adapter-config-start` and `// database-adapter-config-end`\n configReplacement: [' db: mongooseAdapter({', ' url: process.env.DATABASE_URI,', ' }),'],\n}\n\nconst postgresReplacement: DbAdapterReplacement = {\n configReplacement: [\n ' db: postgresAdapter({',\n ' pool: {',\n ' connectionString: process.env.DATABASE_URI,',\n ' },',\n ' }),',\n ],\n importReplacement: \"import { postgresAdapter } from '@payloadcms/db-postgres'\",\n packageName: '@payloadcms/db-postgres',\n}\n\nexport const dbReplacements: Record<DbType, DbAdapterReplacement> = {\n mongodb: mongodbReplacement,\n postgres: postgresReplacement,\n}\n"],"names":["
|
1
|
+
{"version":3,"sources":["../../src/lib/packages.ts"],"sourcesContent":["import type { DbType } from '../types.js'\n\ntype DbAdapterReplacement = {\n configReplacement: string[]\n importReplacement: string\n packageName: string\n}\n\nconst mongodbReplacement: DbAdapterReplacement = {\n importReplacement: \"import { mongooseAdapter } from '@payloadcms/db-mongodb'\",\n packageName: '@payloadcms/db-mongodb',\n // Replacement between `// database-adapter-config-start` and `// database-adapter-config-end`\n configReplacement: [' db: mongooseAdapter({', ' url: process.env.DATABASE_URI,', ' }),'],\n}\n\nconst postgresReplacement: DbAdapterReplacement = {\n configReplacement: [\n ' db: postgresAdapter({',\n ' pool: {',\n ' connectionString: process.env.DATABASE_URI,',\n ' },',\n ' }),',\n ],\n importReplacement: \"import { postgresAdapter } from '@payloadcms/db-postgres'\",\n packageName: '@payloadcms/db-postgres',\n}\n\nexport const dbReplacements: Record<DbType, DbAdapterReplacement> = {\n mongodb: mongodbReplacement,\n postgres: postgresReplacement,\n}\n"],"names":["mongodbReplacement","importReplacement","packageName","configReplacement","postgresReplacement","dbReplacements","mongodb","postgres"],"mappings":"AAQA,MAAMA,qBAA2C;IAC/CC,mBAAmB;IACnBC,aAAa;IACb,8FAA8F;IAC9FC,mBAAmB;QAAC;QAA2B;QAAsC;KAAQ;AAC/F;AAEA,MAAMC,sBAA4C;IAChDD,mBAAmB;QACjB;QACA;QACA;QACA;QACA;KACD;IACDF,mBAAmB;IACnBC,aAAa;AACf;AAEA,OAAO,MAAMG,iBAAuD;IAClEC,SAASN;IACTO,UAAUH;AACZ,EAAC"}
|
@@ -1,74 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
get: function() {
|
8
|
-
return parseProjectName;
|
9
|
-
}
|
10
|
-
});
|
11
|
-
const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
|
12
|
-
const _slugify = /*#__PURE__*/ _interop_require_default(require("@sindresorhus/slugify"));
|
13
|
-
function _interop_require_default(obj) {
|
14
|
-
return obj && obj.__esModule ? obj : {
|
15
|
-
default: obj
|
16
|
-
};
|
17
|
-
}
|
18
|
-
function _getRequireWildcardCache(nodeInterop) {
|
19
|
-
if (typeof WeakMap !== "function") return null;
|
20
|
-
var cacheBabelInterop = new WeakMap();
|
21
|
-
var cacheNodeInterop = new WeakMap();
|
22
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
23
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
24
|
-
})(nodeInterop);
|
25
|
-
}
|
26
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
27
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
28
|
-
return obj;
|
29
|
-
}
|
30
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
31
|
-
return {
|
32
|
-
default: obj
|
33
|
-
};
|
34
|
-
}
|
35
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
36
|
-
if (cache && cache.has(obj)) {
|
37
|
-
return cache.get(obj);
|
38
|
-
}
|
39
|
-
var newObj = {
|
40
|
-
__proto__: null
|
41
|
-
};
|
42
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
43
|
-
for(var key in obj){
|
44
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
45
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
46
|
-
if (desc && (desc.get || desc.set)) {
|
47
|
-
Object.defineProperty(newObj, key, desc);
|
48
|
-
} else {
|
49
|
-
newObj[key] = obj[key];
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
newObj.default = obj;
|
54
|
-
if (cache) {
|
55
|
-
cache.set(obj, newObj);
|
56
|
-
}
|
57
|
-
return newObj;
|
58
|
-
}
|
59
|
-
async function parseProjectName(args) {
|
60
|
-
if (args['--name']) return (0, _slugify.default)(args['--name']);
|
61
|
-
if (args._[0]) return (0, _slugify.default)(args._[0]);
|
62
|
-
const projectName = await _prompts.text({
|
1
|
+
import * as p from '@clack/prompts';
|
2
|
+
import slugify from '@sindresorhus/slugify';
|
3
|
+
export async function parseProjectName(args) {
|
4
|
+
if (args['--name']) return slugify(args['--name']);
|
5
|
+
if (args._[0]) return slugify(args._[0]);
|
6
|
+
const projectName = await p.text({
|
63
7
|
message: 'Project name?',
|
64
8
|
validate: (value)=>{
|
65
9
|
if (!value) return 'Please enter a project name.';
|
66
10
|
}
|
67
11
|
});
|
68
|
-
if (
|
12
|
+
if (p.isCancel(projectName)) {
|
69
13
|
process.exit(0);
|
70
14
|
}
|
71
|
-
return (
|
15
|
+
return slugify(projectName);
|
72
16
|
}
|
73
17
|
|
74
18
|
//# sourceMappingURL=parse-project-name.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/parse-project-name.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\n\nimport type { CliArgs } from '../types.js'\n\nexport async function parseProjectName(args: CliArgs): Promise<string> {\n if (args['--name']) return slugify(args['--name'])\n if (args._[0]) return slugify(args._[0])\n\n const projectName = await p.text({\n message: 'Project name?',\n validate: (value) => {\n if (!value) return 'Please enter a project name.'\n },\n })\n if (p.isCancel(projectName)) {\n process.exit(0)\n }\n return slugify(projectName)\n}\n"],"names":["
|
1
|
+
{"version":3,"sources":["../../src/lib/parse-project-name.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport slugify from '@sindresorhus/slugify'\n\nimport type { CliArgs } from '../types.js'\n\nexport async function parseProjectName(args: CliArgs): Promise<string> {\n if (args['--name']) return slugify(args['--name'])\n if (args._[0]) return slugify(args._[0])\n\n const projectName = await p.text({\n message: 'Project name?',\n validate: (value) => {\n if (!value) return 'Please enter a project name.'\n },\n })\n if (p.isCancel(projectName)) {\n process.exit(0)\n }\n return slugify(projectName)\n}\n"],"names":["p","slugify","parseProjectName","args","_","projectName","text","message","validate","value","isCancel","process","exit"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,aAAa,wBAAuB;AAI3C,OAAO,eAAeC,iBAAiBC,IAAa;IAClD,IAAIA,IAAI,CAAC,SAAS,EAAE,OAAOF,QAAQE,IAAI,CAAC,SAAS;IACjD,IAAIA,KAAKC,CAAC,CAAC,EAAE,EAAE,OAAOH,QAAQE,KAAKC,CAAC,CAAC,EAAE;IAEvC,MAAMC,cAAc,MAAML,EAAEM,IAAI,CAAC;QAC/BC,SAAS;QACTC,UAAU,CAACC;YACT,IAAI,CAACA,OAAO,OAAO;QACrB;IACF;IACA,IAAIT,EAAEU,QAAQ,CAACL,cAAc;QAC3BM,QAAQC,IAAI,CAAC;IACf;IACA,OAAOX,QAAQI;AACjB"}
|
@@ -1,63 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
Object.defineProperty(exports, "parseTemplate", {
|
6
|
-
enumerable: true,
|
7
|
-
get: function() {
|
8
|
-
return parseTemplate;
|
9
|
-
}
|
10
|
-
});
|
11
|
-
const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
|
12
|
-
function _getRequireWildcardCache(nodeInterop) {
|
13
|
-
if (typeof WeakMap !== "function") return null;
|
14
|
-
var cacheBabelInterop = new WeakMap();
|
15
|
-
var cacheNodeInterop = new WeakMap();
|
16
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
17
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
18
|
-
})(nodeInterop);
|
19
|
-
}
|
20
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
21
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
22
|
-
return obj;
|
23
|
-
}
|
24
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
25
|
-
return {
|
26
|
-
default: obj
|
27
|
-
};
|
28
|
-
}
|
29
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
30
|
-
if (cache && cache.has(obj)) {
|
31
|
-
return cache.get(obj);
|
32
|
-
}
|
33
|
-
var newObj = {
|
34
|
-
__proto__: null
|
35
|
-
};
|
36
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
37
|
-
for(var key in obj){
|
38
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
39
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
40
|
-
if (desc && (desc.get || desc.set)) {
|
41
|
-
Object.defineProperty(newObj, key, desc);
|
42
|
-
} else {
|
43
|
-
newObj[key] = obj[key];
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
newObj.default = obj;
|
48
|
-
if (cache) {
|
49
|
-
cache.set(obj, newObj);
|
50
|
-
}
|
51
|
-
return newObj;
|
52
|
-
}
|
53
|
-
async function parseTemplate(args, validTemplates) {
|
1
|
+
import * as p from '@clack/prompts';
|
2
|
+
export async function parseTemplate(args, validTemplates) {
|
54
3
|
if (args['--template']) {
|
55
4
|
const templateName = args['--template'];
|
56
5
|
const template = validTemplates.find((t)=>t.name === templateName);
|
57
6
|
if (!template) throw new Error('Invalid template given');
|
58
7
|
return template;
|
59
8
|
}
|
60
|
-
const response = await
|
9
|
+
const response = await p.select({
|
61
10
|
message: 'Choose project template',
|
62
11
|
options: validTemplates.map((p)=>{
|
63
12
|
return {
|
@@ -66,7 +15,7 @@ async function parseTemplate(args, validTemplates) {
|
|
66
15
|
};
|
67
16
|
})
|
68
17
|
});
|
69
|
-
if (
|
18
|
+
if (p.isCancel(response)) {
|
70
19
|
process.exit(0);
|
71
20
|
}
|
72
21
|
const template = validTemplates.find((t)=>t.name === response);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/lib/parse-template.ts"],"sourcesContent":["import * as p from '@clack/prompts'\n\nimport type { CliArgs, ProjectTemplate } from '../types.js'\n\nexport async function parseTemplate(\n args: CliArgs,\n validTemplates: ProjectTemplate[],\n): Promise<ProjectTemplate | undefined> {\n if (args['--template']) {\n const templateName = args['--template']\n const template = validTemplates.find((t) => t.name === templateName)\n if (!template) throw new Error('Invalid template given')\n return template\n }\n\n const response = await p.select<{ label: string; value: string }[], string>({\n message: 'Choose project template',\n options: validTemplates.map((p) => {\n return {\n label: p.name,\n value: p.name,\n }\n }),\n })\n if (p.isCancel(response)) {\n process.exit(0)\n }\n\n const template = validTemplates.find((t) => t.name === response)\n\n return template\n}\n"],"names":["parseTemplate","args","validTemplates","templateName","template","find","t","name","Error","response","
|
1
|
+
{"version":3,"sources":["../../src/lib/parse-template.ts"],"sourcesContent":["import * as p from '@clack/prompts'\n\nimport type { CliArgs, ProjectTemplate } from '../types.js'\n\nexport async function parseTemplate(\n args: CliArgs,\n validTemplates: ProjectTemplate[],\n): Promise<ProjectTemplate | undefined> {\n if (args['--template']) {\n const templateName = args['--template']\n const template = validTemplates.find((t) => t.name === templateName)\n if (!template) throw new Error('Invalid template given')\n return template\n }\n\n const response = await p.select<{ label: string; value: string }[], string>({\n message: 'Choose project template',\n options: validTemplates.map((p) => {\n return {\n label: p.name,\n value: p.name,\n }\n }),\n })\n if (p.isCancel(response)) {\n process.exit(0)\n }\n\n const template = validTemplates.find((t) => t.name === response)\n\n return template\n}\n"],"names":["p","parseTemplate","args","validTemplates","templateName","template","find","t","name","Error","response","select","message","options","map","label","value","isCancel","process","exit"],"mappings":"AAAA,YAAYA,OAAO,iBAAgB;AAInC,OAAO,eAAeC,cACpBC,IAAa,EACbC,cAAiC;IAEjC,IAAID,IAAI,CAAC,aAAa,EAAE;QACtB,MAAME,eAAeF,IAAI,CAAC,aAAa;QACvC,MAAMG,WAAWF,eAAeG,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ;QACvD,IAAI,CAACC,UAAU,MAAM,IAAII,MAAM;QAC/B,OAAOJ;IACT;IAEA,MAAMK,WAAW,MAAMV,EAAEW,MAAM,CAA6C;QAC1EC,SAAS;QACTC,SAASV,eAAeW,GAAG,CAAC,CAACd;YAC3B,OAAO;gBACLe,OAAOf,EAAEQ,IAAI;gBACbQ,OAAOhB,EAAEQ,IAAI;YACf;QACF;IACF;IACA,IAAIR,EAAEiB,QAAQ,CAACP,WAAW;QACxBQ,QAAQC,IAAI,CAAC;IACf;IAEA,MAAMd,WAAWF,eAAeG,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKE;IAEvD,OAAOL;AACT"}
|
package/dist/lib/select-db.js
CHANGED
@@ -1,61 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
value: true
|
4
|
-
});
|
5
|
-
Object.defineProperty(exports, "selectDb", {
|
6
|
-
enumerable: true,
|
7
|
-
get: function() {
|
8
|
-
return selectDb;
|
9
|
-
}
|
10
|
-
});
|
11
|
-
const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
|
12
|
-
const _slugify = /*#__PURE__*/ _interop_require_default(require("@sindresorhus/slugify"));
|
13
|
-
function _interop_require_default(obj) {
|
14
|
-
return obj && obj.__esModule ? obj : {
|
15
|
-
default: obj
|
16
|
-
};
|
17
|
-
}
|
18
|
-
function _getRequireWildcardCache(nodeInterop) {
|
19
|
-
if (typeof WeakMap !== "function") return null;
|
20
|
-
var cacheBabelInterop = new WeakMap();
|
21
|
-
var cacheNodeInterop = new WeakMap();
|
22
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
23
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
24
|
-
})(nodeInterop);
|
25
|
-
}
|
26
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
27
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
28
|
-
return obj;
|
29
|
-
}
|
30
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
31
|
-
return {
|
32
|
-
default: obj
|
33
|
-
};
|
34
|
-
}
|
35
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
36
|
-
if (cache && cache.has(obj)) {
|
37
|
-
return cache.get(obj);
|
38
|
-
}
|
39
|
-
var newObj = {
|
40
|
-
__proto__: null
|
41
|
-
};
|
42
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
43
|
-
for(var key in obj){
|
44
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
45
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
46
|
-
if (desc && (desc.get || desc.set)) {
|
47
|
-
Object.defineProperty(newObj, key, desc);
|
48
|
-
} else {
|
49
|
-
newObj[key] = obj[key];
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
newObj.default = obj;
|
54
|
-
if (cache) {
|
55
|
-
cache.set(obj, newObj);
|
56
|
-
}
|
57
|
-
return newObj;
|
58
|
-
}
|
1
|
+
import * as p from '@clack/prompts';
|
2
|
+
import slugify from '@sindresorhus/slugify';
|
59
3
|
const dbChoiceRecord = {
|
60
4
|
mongodb: {
|
61
5
|
dbConnectionPrefix: 'mongodb://127.0.0.1/',
|
@@ -68,7 +12,7 @@ const dbChoiceRecord = {
|
|
68
12
|
value: 'postgres'
|
69
13
|
}
|
70
14
|
};
|
71
|
-
async function selectDb(args, projectName) {
|
15
|
+
export async function selectDb(args, projectName) {
|
72
16
|
let dbType = undefined;
|
73
17
|
if (args['--db']) {
|
74
18
|
if (!Object.values(dbChoiceRecord).some((dbChoice)=>dbChoice.value === args['--db'])) {
|
@@ -76,7 +20,7 @@ async function selectDb(args, projectName) {
|
|
76
20
|
}
|
77
21
|
dbType = args['--db'];
|
78
22
|
} else {
|
79
|
-
dbType = await
|
23
|
+
dbType = await p.select({
|
80
24
|
initialValue: 'mongodb',
|
81
25
|
message: `Select a database`,
|
82
26
|
options: [
|
@@ -90,21 +34,21 @@ async function selectDb(args, projectName) {
|
|
90
34
|
}
|
91
35
|
]
|
92
36
|
});
|
93
|
-
if (
|
37
|
+
if (p.isCancel(dbType)) process.exit(0);
|
94
38
|
}
|
95
39
|
const dbChoice = dbChoiceRecord[dbType];
|
96
40
|
let dbUri = undefined;
|
97
|
-
const initialDbUri = `${dbChoice.dbConnectionPrefix}${projectName === '.' ? `payload-${getRandomDigitSuffix()}` : (
|
41
|
+
const initialDbUri = `${dbChoice.dbConnectionPrefix}${projectName === '.' ? `payload-${getRandomDigitSuffix()}` : slugify(projectName)}`;
|
98
42
|
if (args['--db-accept-recommended']) {
|
99
43
|
dbUri = initialDbUri;
|
100
44
|
} else if (args['--db-connection-string']) {
|
101
45
|
dbUri = args['--db-connection-string'];
|
102
46
|
} else {
|
103
|
-
dbUri = await
|
47
|
+
dbUri = await p.text({
|
104
48
|
initialValue: initialDbUri,
|
105
49
|
message: `Enter ${dbChoice.title.split(' ')[0]} connection string`
|
106
50
|
});
|
107
|
-
if (
|
51
|
+
if (p.isCancel(dbUri)) process.exit(0);
|
108
52
|
}
|
109
53
|
return {
|
110
54
|
type: dbChoice.value,
|