create-payload-app 3.0.0-alpha.55 → 3.0.0-alpha.60
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/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 +2 -2
package/dist/main.js
CHANGED
@@ -1,82 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
}
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
const _initnext = require("./lib/init-next.js");
|
22
|
-
const _parseprojectname = require("./lib/parse-project-name.js");
|
23
|
-
const _parsetemplate = require("./lib/parse-template.js");
|
24
|
-
const _selectdb = require("./lib/select-db.js");
|
25
|
-
const _templates = require("./lib/templates.js");
|
26
|
-
const _writeenvfile = require("./lib/write-env-file.js");
|
27
|
-
const _log = require("./utils/log.js");
|
28
|
-
const _messages = require("./utils/messages.js");
|
29
|
-
function _interop_require_default(obj) {
|
30
|
-
return obj && obj.__esModule ? obj : {
|
31
|
-
default: obj
|
32
|
-
};
|
33
|
-
}
|
34
|
-
function _getRequireWildcardCache(nodeInterop) {
|
35
|
-
if (typeof WeakMap !== "function") return null;
|
36
|
-
var cacheBabelInterop = new WeakMap();
|
37
|
-
var cacheNodeInterop = new WeakMap();
|
38
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
39
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
40
|
-
})(nodeInterop);
|
41
|
-
}
|
42
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
43
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
44
|
-
return obj;
|
45
|
-
}
|
46
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
47
|
-
return {
|
48
|
-
default: obj
|
49
|
-
};
|
50
|
-
}
|
51
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
52
|
-
if (cache && cache.has(obj)) {
|
53
|
-
return cache.get(obj);
|
54
|
-
}
|
55
|
-
var newObj = {
|
56
|
-
__proto__: null
|
57
|
-
};
|
58
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
59
|
-
for(var key in obj){
|
60
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
61
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
62
|
-
if (desc && (desc.get || desc.set)) {
|
63
|
-
Object.defineProperty(newObj, key, desc);
|
64
|
-
} else {
|
65
|
-
newObj[key] = obj[key];
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
newObj.default = obj;
|
70
|
-
if (cache) {
|
71
|
-
cache.set(obj, newObj);
|
72
|
-
}
|
73
|
-
return newObj;
|
74
|
-
}
|
75
|
-
class Main {
|
1
|
+
import * as p from '@clack/prompts';
|
2
|
+
import slugify from '@sindresorhus/slugify';
|
3
|
+
import arg from 'arg';
|
4
|
+
import chalk from 'chalk';
|
5
|
+
// @ts-expect-error no types
|
6
|
+
import { detect } from 'detect-package-manager';
|
7
|
+
import figures from 'figures';
|
8
|
+
import path from 'path';
|
9
|
+
import { configurePayloadConfig } from './lib/configure-payload-config.js';
|
10
|
+
import { createProject } from './lib/create-project.js';
|
11
|
+
import { generateSecret } from './lib/generate-secret.js';
|
12
|
+
import { getNextAppDetails, initNext } from './lib/init-next.js';
|
13
|
+
import { parseProjectName } from './lib/parse-project-name.js';
|
14
|
+
import { parseTemplate } from './lib/parse-template.js';
|
15
|
+
import { selectDb } from './lib/select-db.js';
|
16
|
+
import { getValidTemplates, validateTemplate } from './lib/templates.js';
|
17
|
+
import { writeEnvFile } from './lib/write-env-file.js';
|
18
|
+
import { error, info } from './utils/log.js';
|
19
|
+
import { feedbackOutro, helpMessage, moveMessage, successMessage, successfulNextInit } from './utils/messages.js';
|
20
|
+
export class Main {
|
76
21
|
args;
|
77
22
|
constructor(){
|
78
23
|
// @ts-expect-error bad typings
|
79
|
-
this.args = (
|
24
|
+
this.args = arg({
|
80
25
|
'--db': String,
|
81
26
|
'--db-accept-recommended': Boolean,
|
82
27
|
'--db-connection-string': String,
|
@@ -109,43 +54,43 @@ class Main {
|
|
109
54
|
async init() {
|
110
55
|
try {
|
111
56
|
if (this.args['--help']) {
|
112
|
-
|
57
|
+
helpMessage();
|
113
58
|
process.exit(0);
|
114
59
|
}
|
115
60
|
// eslint-disable-next-line no-console
|
116
61
|
console.log('\n');
|
117
|
-
|
118
|
-
|
62
|
+
p.intro(chalk.bgCyan(chalk.black(' create-payload-app ')));
|
63
|
+
p.note("Welcome to Payload. Let's create a project!");
|
119
64
|
// Detect if inside Next.js project
|
120
|
-
const nextAppDetails = await
|
65
|
+
const nextAppDetails = await getNextAppDetails(process.cwd());
|
121
66
|
const { hasTopLevelLayout, nextAppDir, nextConfigPath } = nextAppDetails;
|
122
67
|
if (nextConfigPath) {
|
123
|
-
this.args['--name'] = (
|
68
|
+
this.args['--name'] = slugify(path.basename(path.dirname(nextConfigPath)));
|
124
69
|
}
|
125
|
-
const projectName = await
|
126
|
-
const projectDir = nextConfigPath ?
|
70
|
+
const projectName = await parseProjectName(this.args);
|
71
|
+
const projectDir = nextConfigPath ? path.dirname(nextConfigPath) : path.resolve(process.cwd(), slugify(projectName));
|
127
72
|
const packageManager = await getPackageManager(this.args, projectDir);
|
128
73
|
if (nextConfigPath) {
|
129
|
-
|
130
|
-
const proceed = await
|
74
|
+
p.log.step(chalk.bold(`${chalk.bgBlack(` ${figures.triangleUp} Next.js `)} project detected!`));
|
75
|
+
const proceed = await p.confirm({
|
131
76
|
initialValue: true,
|
132
|
-
message:
|
77
|
+
message: chalk.bold(`Install ${chalk.green('Payload')} in this project?`)
|
133
78
|
});
|
134
|
-
if (
|
135
|
-
|
79
|
+
if (p.isCancel(proceed) || !proceed) {
|
80
|
+
p.outro(feedbackOutro());
|
136
81
|
process.exit(0);
|
137
82
|
}
|
138
83
|
// Check for top-level layout.tsx
|
139
84
|
if (nextAppDir && hasTopLevelLayout) {
|
140
|
-
|
85
|
+
p.log.warn(moveMessage({
|
141
86
|
nextAppDir,
|
142
87
|
projectDir
|
143
88
|
}));
|
144
|
-
|
89
|
+
p.outro(feedbackOutro());
|
145
90
|
process.exit(0);
|
146
91
|
}
|
147
|
-
const dbDetails = await
|
148
|
-
const result = await
|
92
|
+
const dbDetails = await selectDb(this.args, projectName);
|
93
|
+
const result = await initNext({
|
149
94
|
...this.args,
|
150
95
|
dbType: dbDetails.type,
|
151
96
|
nextAppDetails,
|
@@ -153,47 +98,47 @@ class Main {
|
|
153
98
|
projectDir
|
154
99
|
});
|
155
100
|
if (result.success === false) {
|
156
|
-
|
101
|
+
p.outro(feedbackOutro());
|
157
102
|
process.exit(1);
|
158
103
|
}
|
159
|
-
await
|
104
|
+
await configurePayloadConfig({
|
160
105
|
dbDetails,
|
161
106
|
projectDirOrConfigPath: {
|
162
107
|
payloadConfigPath: result.payloadConfigPath
|
163
108
|
}
|
164
109
|
});
|
165
|
-
await
|
110
|
+
await writeEnvFile({
|
166
111
|
cliArgs: this.args,
|
167
112
|
databaseUri: dbDetails.dbUri,
|
168
|
-
payloadSecret:
|
113
|
+
payloadSecret: generateSecret(),
|
169
114
|
projectDir
|
170
115
|
});
|
171
|
-
|
172
|
-
|
173
|
-
|
116
|
+
info('Payload project successfully initialized!');
|
117
|
+
p.note(successfulNextInit(), chalk.bgGreen(chalk.black(' Documentation ')));
|
118
|
+
p.outro(feedbackOutro());
|
174
119
|
return;
|
175
120
|
}
|
176
121
|
const templateArg = this.args['--template'];
|
177
122
|
if (templateArg) {
|
178
|
-
const valid =
|
123
|
+
const valid = validateTemplate(templateArg);
|
179
124
|
if (!valid) {
|
180
|
-
|
125
|
+
helpMessage();
|
181
126
|
process.exit(1);
|
182
127
|
}
|
183
128
|
}
|
184
|
-
const validTemplates =
|
185
|
-
const template = await
|
129
|
+
const validTemplates = getValidTemplates();
|
130
|
+
const template = await parseTemplate(this.args, validTemplates);
|
186
131
|
if (!template) {
|
187
|
-
|
188
|
-
|
132
|
+
p.log.error('Invalid template given');
|
133
|
+
p.outro(feedbackOutro());
|
189
134
|
process.exit(1);
|
190
135
|
}
|
191
136
|
switch(template.type){
|
192
137
|
case 'starter':
|
193
138
|
{
|
194
|
-
const dbDetails = await
|
195
|
-
const payloadSecret =
|
196
|
-
await
|
139
|
+
const dbDetails = await selectDb(this.args, projectName);
|
140
|
+
const payloadSecret = generateSecret();
|
141
|
+
await createProject({
|
197
142
|
cliArgs: this.args,
|
198
143
|
dbDetails,
|
199
144
|
packageManager,
|
@@ -201,7 +146,7 @@ class Main {
|
|
201
146
|
projectName,
|
202
147
|
template
|
203
148
|
});
|
204
|
-
await
|
149
|
+
await writeEnvFile({
|
205
150
|
cliArgs: this.args,
|
206
151
|
databaseUri: dbDetails.dbUri,
|
207
152
|
payloadSecret,
|
@@ -212,7 +157,7 @@ class Main {
|
|
212
157
|
}
|
213
158
|
case 'plugin':
|
214
159
|
{
|
215
|
-
await
|
160
|
+
await createProject({
|
216
161
|
cliArgs: this.args,
|
217
162
|
packageManager,
|
218
163
|
projectDir,
|
@@ -222,11 +167,11 @@ class Main {
|
|
222
167
|
break;
|
223
168
|
}
|
224
169
|
}
|
225
|
-
|
226
|
-
|
227
|
-
|
170
|
+
info('Payload project successfully created!');
|
171
|
+
p.note(successMessage(projectDir, packageManager), chalk.bgGreen(chalk.black(' Next Steps ')));
|
172
|
+
p.outro(feedbackOutro());
|
228
173
|
} catch (err) {
|
229
|
-
|
174
|
+
error(err instanceof Error ? err.message : 'An error occurred');
|
230
175
|
}
|
231
176
|
}
|
232
177
|
}
|
@@ -239,7 +184,7 @@ async function getPackageManager(args, projectDir) {
|
|
239
184
|
} else if (args['--use-pnpm']) {
|
240
185
|
packageManager = 'pnpm';
|
241
186
|
} else {
|
242
|
-
const detected = await
|
187
|
+
const detected = await detect({
|
243
188
|
cwd: projectDir
|
244
189
|
});
|
245
190
|
packageManager = detected || 'npm';
|
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'\n// @ts-expect-error no types\nimport { detect } from 'detect-package-manager'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type { CliArgs, PackageManager } from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { writeEnvFile } from './lib/write-env-file.js'\nimport { error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successMessage,\n successfulNextInit,\n} from './utils/messages.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n '--template-branch': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Package manager\n '--no-deps': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\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 { hasTopLevelLayout, nextAppDir, nextConfigPath } = nextAppDetails\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(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 dbDetails,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await writeEnvFile({\n cliArgs: this.args,\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(templateArg)\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\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 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n const payloadSecret = generateSecret()\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n await writeEnvFile({\n cliArgs: this.args,\n databaseUri: dbDetails.dbUri,\n payloadSecret,\n projectDir,\n template,\n })\n break\n }\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n }\n\n info('Payload project successfully created!')\n p.note(successMessage(projectDir, packageManager), chalk.bgGreen(chalk.black(' Next Steps ')))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\nasync function getPackageManager(args: CliArgs, projectDir: string): Promise<PackageManager> {\n let packageManager: PackageManager = 'npm'\n\n if (args['--use-npm']) {\n packageManager = 'npm'\n } else if (args['--use-yarn']) {\n packageManager = 'yarn'\n } else if (args['--use-pnpm']) {\n packageManager = 'pnpm'\n } else {\n const detected = await detect({ cwd: projectDir })\n packageManager = detected || 'npm'\n }\n return packageManager\n}\n"],"names":["Main","args","constructor","arg","String","Boolean","permissive","init","helpMessage","process","exit","console","log","p","intro","chalk","bgCyan","black","note","nextAppDetails","getNextAppDetails","cwd","hasTopLevelLayout","nextAppDir","nextConfigPath","slugify","path","basename","dirname","projectName","parseProjectName","projectDir","resolve","packageManager","getPackageManager","step","bold","bgBlack","figures","triangleUp","proceed","confirm","initialValue","message","green","isCancel","outro","feedbackOutro","warn","moveMessage","dbDetails","selectDb","result","initNext","dbType","type","success","configurePayloadConfig","projectDirOrConfigPath","payloadConfigPath","writeEnvFile","cliArgs","databaseUri","dbUri","payloadSecret","generateSecret","info","successfulNextInit","bgGreen","templateArg","valid","validateTemplate","validTemplates","getValidTemplates","template","parseTemplate","error","createProject","successMessage","err","Error","detected","detect"],"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'\n// @ts-expect-error no types\nimport { detect } from 'detect-package-manager'\nimport figures from 'figures'\nimport path from 'path'\n\nimport type { CliArgs, PackageManager } from './types.js'\n\nimport { configurePayloadConfig } from './lib/configure-payload-config.js'\nimport { createProject } from './lib/create-project.js'\nimport { generateSecret } from './lib/generate-secret.js'\nimport { getNextAppDetails, initNext } from './lib/init-next.js'\nimport { parseProjectName } from './lib/parse-project-name.js'\nimport { parseTemplate } from './lib/parse-template.js'\nimport { selectDb } from './lib/select-db.js'\nimport { getValidTemplates, validateTemplate } from './lib/templates.js'\nimport { writeEnvFile } from './lib/write-env-file.js'\nimport { error, info } from './utils/log.js'\nimport {\n feedbackOutro,\n helpMessage,\n moveMessage,\n successMessage,\n successfulNextInit,\n} from './utils/messages.js'\n\nexport class Main {\n args: CliArgs\n\n constructor() {\n // @ts-expect-error bad typings\n this.args = arg(\n {\n '--db': String,\n '--db-accept-recommended': Boolean,\n '--db-connection-string': String,\n '--help': Boolean,\n '--local-template': String,\n '--name': String,\n '--secret': String,\n '--template': String,\n '--template-branch': String,\n\n // Next.js\n '--init-next': Boolean, // TODO: Is this needed if we detect if inside Next.js project?\n\n // Package manager\n '--no-deps': Boolean,\n '--use-npm': Boolean,\n '--use-pnpm': Boolean,\n '--use-yarn': Boolean,\n\n // Flags\n '--beta': Boolean,\n '--debug': Boolean,\n '--dry-run': Boolean,\n\n // Aliases\n '-d': '--db',\n '-h': '--help',\n '-n': '--name',\n '-t': '--template',\n },\n { permissive: true },\n )\n }\n\n async init(): Promise<void> {\n try {\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 { hasTopLevelLayout, nextAppDir, nextConfigPath } = nextAppDetails\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(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 dbDetails,\n projectDirOrConfigPath: {\n payloadConfigPath: result.payloadConfigPath,\n },\n })\n\n await writeEnvFile({\n cliArgs: this.args,\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(templateArg)\n if (!valid) {\n helpMessage()\n process.exit(1)\n }\n }\n\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 'starter': {\n const dbDetails = await selectDb(this.args, projectName)\n const payloadSecret = generateSecret()\n await createProject({\n cliArgs: this.args,\n dbDetails,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n await writeEnvFile({\n cliArgs: this.args,\n databaseUri: dbDetails.dbUri,\n payloadSecret,\n projectDir,\n template,\n })\n break\n }\n case 'plugin': {\n await createProject({\n cliArgs: this.args,\n packageManager,\n projectDir,\n projectName,\n template,\n })\n break\n }\n }\n\n info('Payload project successfully created!')\n p.note(successMessage(projectDir, packageManager), chalk.bgGreen(chalk.black(' Next Steps ')))\n p.outro(feedbackOutro())\n } catch (err: unknown) {\n error(err instanceof Error ? err.message : 'An error occurred')\n }\n }\n}\n\nasync function getPackageManager(args: CliArgs, projectDir: string): Promise<PackageManager> {\n let packageManager: PackageManager = 'npm'\n\n if (args['--use-npm']) {\n packageManager = 'npm'\n } else if (args['--use-yarn']) {\n packageManager = 'yarn'\n } else if (args['--use-pnpm']) {\n packageManager = 'pnpm'\n } else {\n const detected = await detect({ cwd: projectDir })\n packageManager = detected || 'npm'\n }\n return packageManager\n}\n"],"names":["p","slugify","arg","chalk","detect","figures","path","configurePayloadConfig","createProject","generateSecret","getNextAppDetails","initNext","parseProjectName","parseTemplate","selectDb","getValidTemplates","validateTemplate","writeEnvFile","error","info","feedbackOutro","helpMessage","moveMessage","successMessage","successfulNextInit","Main","args","constructor","String","Boolean","permissive","init","process","exit","console","log","intro","bgCyan","black","note","nextAppDetails","cwd","hasTopLevelLayout","nextAppDir","nextConfigPath","basename","dirname","projectName","projectDir","resolve","packageManager","getPackageManager","step","bold","bgBlack","triangleUp","proceed","confirm","initialValue","message","green","isCancel","outro","warn","dbDetails","result","dbType","type","success","projectDirOrConfigPath","payloadConfigPath","cliArgs","databaseUri","dbUri","payloadSecret","bgGreen","templateArg","valid","validTemplates","template","err","Error","detected"],"mappings":"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"}
|
@@ -1,18 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
const
|
6
|
-
const
|
7
|
-
const _nodeurl = require("node:url");
|
8
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
9
|
-
function _interop_require_default(obj) {
|
10
|
-
return obj && obj.__esModule ? obj : {
|
11
|
-
default: obj
|
12
|
-
};
|
13
|
-
}
|
14
|
-
const filename = (0, _nodeurl.fileURLToPath)(require("url").pathToFileURL(__filename).toString());
|
15
|
-
const dirname = _path.default.dirname(filename);
|
1
|
+
import fs from 'fs';
|
2
|
+
import fsp from 'fs/promises';
|
3
|
+
import { fileURLToPath } from 'node:url';
|
4
|
+
import path from 'path';
|
5
|
+
const filename = fileURLToPath(import.meta.url);
|
6
|
+
const dirname = path.dirname(filename);
|
16
7
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
17
8
|
main();
|
18
9
|
/**
|
@@ -20,22 +11,22 @@ main();
|
|
20
11
|
*
|
21
12
|
* Eventually, this should be replaced with using tar.x to stream from the git repo
|
22
13
|
*/ async function main() {
|
23
|
-
const root =
|
24
|
-
const outputPath =
|
25
|
-
const sourceTemplatePath =
|
26
|
-
if (!
|
14
|
+
const root = path.resolve(dirname, '../../../../');
|
15
|
+
const outputPath = path.resolve(dirname, '../../dist/template');
|
16
|
+
const sourceTemplatePath = path.resolve(root, 'templates/blank-3.0');
|
17
|
+
if (!fs.existsSync(sourceTemplatePath)) {
|
27
18
|
throw new Error(`Source path does not exist: ${sourceTemplatePath}`);
|
28
19
|
}
|
29
|
-
if (!
|
30
|
-
|
20
|
+
if (!fs.existsSync(outputPath)) {
|
21
|
+
fs.mkdirSync(outputPath, {
|
31
22
|
recursive: true
|
32
23
|
});
|
33
24
|
}
|
34
25
|
// Copy the src directory from `templates/blank-3.0` to `dist`
|
35
|
-
const srcPath =
|
36
|
-
const distSrcPath =
|
26
|
+
const srcPath = path.resolve(sourceTemplatePath, 'src');
|
27
|
+
const distSrcPath = path.resolve(outputPath, 'src');
|
37
28
|
// Copy entire file structure from src to dist
|
38
|
-
await
|
29
|
+
await fsp.cp(srcPath, distSrcPath, {
|
39
30
|
recursive: true
|
40
31
|
});
|
41
32
|
}
|
@@ -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-3.0` 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-3.0')\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-3.0` 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":["
|
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-3.0` 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-3.0')\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-3.0` 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;AACvB,MAAMC,WAAWF,cAAc,YAAYG,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAE7B,mEAAmE;AACnEG;AAEA;;;;CAIC,GAED,eAAeA;IACb,MAAMC,OAAOL,KAAKM,OAAO,CAACH,SAAS;IACnC,MAAMI,aAAaP,KAAKM,OAAO,CAACH,SAAS;IACzC,MAAMK,qBAAqBR,KAAKM,OAAO,CAACD,MAAM;IAE9C,IAAI,CAACR,GAAGY,UAAU,CAACD,qBAAqB;QACtC,MAAM,IAAIE,MAAM,CAAC,4BAA4B,EAAEF,mBAAmB,CAAC;IACrE;IAEA,IAAI,CAACX,GAAGY,UAAU,CAACF,aAAa;QAC9BV,GAAGc,SAAS,CAACJ,YAAY;YAAEK,WAAW;QAAK;IAC7C;IAEA,8DAA8D;IAC9D,MAAMC,UAAUb,KAAKM,OAAO,CAACE,oBAAoB;IACjD,MAAMM,cAAcd,KAAKM,OAAO,CAACC,YAAY;IAC7C,8CAA8C;IAC9C,MAAMT,IAAIiB,EAAE,CAACF,SAASC,aAAa;QAAEF,WAAW;IAAK;AACvD"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":[],"mappings":""}
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type arg from 'arg'\n\nexport interface Args extends arg.Spec {\n '--beta': BooleanConstructor\n '--db': StringConstructor\n '--db-accept-recommended': BooleanConstructor\n '--db-connection-string': StringConstructor\n '--debug': BooleanConstructor\n '--dry-run': BooleanConstructor\n '--help': BooleanConstructor\n '--init-next': BooleanConstructor\n '--local-template': StringConstructor\n '--name': StringConstructor\n '--no-deps': BooleanConstructor\n '--secret': StringConstructor\n '--template': StringConstructor\n '--template-branch': StringConstructor\n '--use-npm': BooleanConstructor\n '--use-pnpm': BooleanConstructor\n '--use-yarn': BooleanConstructor\n\n // Aliases\n\n '-h': string\n '-n': string\n '-t': string\n}\n\nexport type CliArgs = arg.Result<Args>\n\nexport type ProjectTemplate = GitTemplate | PluginTemplate\n\n/**\n * Template that is cloned verbatim from a git repo\n * Performs .env manipulation based upon input\n */\nexport interface GitTemplate extends Template {\n type: 'starter'\n url: string\n}\n\n/**\n * Type specifically for the plugin template\n * No .env manipulation is done\n */\nexport interface PluginTemplate extends Template {\n type: 'plugin'\n url: string\n}\n\ninterface Template {\n description?: string\n name: string\n type: ProjectTemplate['type']\n}\n\nexport type PackageManager = 'bun' | 'npm' | 'pnpm' | 'yarn'\n\nexport type DbType = 'mongodb' | 'postgres'\n\nexport type DbDetails = {\n dbUri: string\n type: DbType\n}\n\nexport type EditorType = 'lexical' | 'slate'\n"],"names":[],"mappings":"AAiEA,WAA4C"}
|
@@ -1,33 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
return copyRecursiveSync;
|
9
|
-
}
|
10
|
-
});
|
11
|
-
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
12
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
13
|
-
function _interop_require_default(obj) {
|
14
|
-
return obj && obj.__esModule ? obj : {
|
15
|
-
default: obj
|
16
|
-
};
|
17
|
-
}
|
18
|
-
function copyRecursiveSync(src, dest, debug) {
|
19
|
-
const exists = _fs.default.existsSync(src);
|
20
|
-
const stats = exists && _fs.default.statSync(src);
|
1
|
+
import fs from 'fs';
|
2
|
+
import path from 'path';
|
3
|
+
/**
|
4
|
+
* Recursively copy files from src to dest
|
5
|
+
*/ export function copyRecursiveSync(src, dest, debug) {
|
6
|
+
const exists = fs.existsSync(src);
|
7
|
+
const stats = exists && fs.statSync(src);
|
21
8
|
const isDirectory = exists && stats !== false && stats.isDirectory();
|
22
9
|
if (isDirectory) {
|
23
|
-
|
10
|
+
fs.mkdirSync(dest, {
|
24
11
|
recursive: true
|
25
12
|
});
|
26
|
-
|
27
|
-
copyRecursiveSync(
|
13
|
+
fs.readdirSync(src).forEach((childItemName)=>{
|
14
|
+
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
|
28
15
|
});
|
29
16
|
} else {
|
30
|
-
|
17
|
+
fs.copyFileSync(src, dest);
|
31
18
|
}
|
32
19
|
}
|
33
20
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utils/copy-recursive-sync.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\n/**\n * Recursively copy files from src to dest\n */\nexport function copyRecursiveSync(src: string, dest: string, debug?: boolean) {\n const exists = fs.existsSync(src)\n const stats = exists && fs.statSync(src)\n const isDirectory = exists && stats !== false && stats.isDirectory()\n if (isDirectory) {\n fs.mkdirSync(dest, { recursive: true })\n fs.readdirSync(src).forEach((childItemName) => {\n copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName))\n })\n } else {\n fs.copyFileSync(src, dest)\n }\n}\n"],"names":["copyRecursiveSync","src","dest","debug","exists","
|
1
|
+
{"version":3,"sources":["../../src/utils/copy-recursive-sync.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\n\n/**\n * Recursively copy files from src to dest\n */\nexport function copyRecursiveSync(src: string, dest: string, debug?: boolean) {\n const exists = fs.existsSync(src)\n const stats = exists && fs.statSync(src)\n const isDirectory = exists && stats !== false && stats.isDirectory()\n if (isDirectory) {\n fs.mkdirSync(dest, { recursive: true })\n fs.readdirSync(src).forEach((childItemName) => {\n copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName))\n })\n } else {\n fs.copyFileSync(src, dest)\n }\n}\n"],"names":["fs","path","copyRecursiveSync","src","dest","debug","exists","existsSync","stats","statSync","isDirectory","mkdirSync","recursive","readdirSync","forEach","childItemName","join","copyFileSync"],"mappings":"AAAA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AAEvB;;CAEC,GACD,OAAO,SAASC,kBAAkBC,GAAW,EAAEC,IAAY,EAAEC,KAAe;IAC1E,MAAMC,SAASN,GAAGO,UAAU,CAACJ;IAC7B,MAAMK,QAAQF,UAAUN,GAAGS,QAAQ,CAACN;IACpC,MAAMO,cAAcJ,UAAUE,UAAU,SAASA,MAAME,WAAW;IAClE,IAAIA,aAAa;QACfV,GAAGW,SAAS,CAACP,MAAM;YAAEQ,WAAW;QAAK;QACrCZ,GAAGa,WAAW,CAACV,KAAKW,OAAO,CAAC,CAACC;YAC3Bb,kBAAkBD,KAAKe,IAAI,CAACb,KAAKY,gBAAgBd,KAAKe,IAAI,CAACZ,MAAMW;QACnE;IACF,OAAO;QACLf,GAAGiB,YAAY,CAACd,KAAKC;IACvB;AACF"}
|
package/dist/utils/log.js
CHANGED
@@ -1,92 +1,19 @@
|
|
1
|
-
/* eslint-disable no-console */
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
function _export(target, all) {
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
7
|
-
enumerable: true,
|
8
|
-
get: all[name]
|
9
|
-
});
|
10
|
-
}
|
11
|
-
_export(exports, {
|
12
|
-
debug: function() {
|
13
|
-
return debug;
|
14
|
-
},
|
15
|
-
error: function() {
|
16
|
-
return error;
|
17
|
-
},
|
18
|
-
info: function() {
|
19
|
-
return info;
|
20
|
-
},
|
21
|
-
log: function() {
|
22
|
-
return log;
|
23
|
-
},
|
24
|
-
warning: function() {
|
25
|
-
return warning;
|
26
|
-
}
|
27
|
-
});
|
28
|
-
const _prompts = /*#__PURE__*/ _interop_require_wildcard(require("@clack/prompts"));
|
29
|
-
const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
30
|
-
function _interop_require_default(obj) {
|
31
|
-
return obj && obj.__esModule ? obj : {
|
32
|
-
default: obj
|
33
|
-
};
|
34
|
-
}
|
35
|
-
function _getRequireWildcardCache(nodeInterop) {
|
36
|
-
if (typeof WeakMap !== "function") return null;
|
37
|
-
var cacheBabelInterop = new WeakMap();
|
38
|
-
var cacheNodeInterop = new WeakMap();
|
39
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
40
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
41
|
-
})(nodeInterop);
|
42
|
-
}
|
43
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
44
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
45
|
-
return obj;
|
46
|
-
}
|
47
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
48
|
-
return {
|
49
|
-
default: obj
|
50
|
-
};
|
51
|
-
}
|
52
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
53
|
-
if (cache && cache.has(obj)) {
|
54
|
-
return cache.get(obj);
|
55
|
-
}
|
56
|
-
var newObj = {
|
57
|
-
__proto__: null
|
58
|
-
};
|
59
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
60
|
-
for(var key in obj){
|
61
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
62
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
63
|
-
if (desc && (desc.get || desc.set)) {
|
64
|
-
Object.defineProperty(newObj, key, desc);
|
65
|
-
} else {
|
66
|
-
newObj[key] = obj[key];
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
newObj.default = obj;
|
71
|
-
if (cache) {
|
72
|
-
cache.set(obj, newObj);
|
73
|
-
}
|
74
|
-
return newObj;
|
75
|
-
}
|
76
|
-
const warning = (message)=>{
|
77
|
-
_prompts.log.warn(_chalk.default.yellow('? ') + _chalk.default.bold(message));
|
1
|
+
/* eslint-disable no-console */ import * as p from '@clack/prompts';
|
2
|
+
import chalk from 'chalk';
|
3
|
+
export const warning = (message)=>{
|
4
|
+
p.log.warn(chalk.yellow('? ') + chalk.bold(message));
|
78
5
|
};
|
79
|
-
const info = (message)=>{
|
80
|
-
|
6
|
+
export const info = (message)=>{
|
7
|
+
p.log.step(chalk.bold(message));
|
81
8
|
};
|
82
|
-
const error = (message)=>{
|
83
|
-
|
9
|
+
export const error = (message)=>{
|
10
|
+
p.log.error(chalk.bold(message));
|
84
11
|
};
|
85
|
-
const debug = (message)=>{
|
86
|
-
|
12
|
+
export const debug = (message)=>{
|
13
|
+
p.log.step(`${chalk.bgGray('[DEBUG]')} ${chalk.gray(message)}`);
|
87
14
|
};
|
88
|
-
const log = (message)=>{
|
89
|
-
|
15
|
+
export const log = (message)=>{
|
16
|
+
p.log.message(message);
|
90
17
|
};
|
91
18
|
|
92
19
|
//# sourceMappingURL=log.js.map
|
package/dist/utils/log.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utils/log.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport * as p from '@clack/prompts'\nimport chalk from 'chalk'\n\nexport const warning = (message: string): void => {\n p.log.warn(chalk.yellow('? ') + chalk.bold(message))\n}\n\nexport const info = (message: string): void => {\n p.log.step(chalk.bold(message))\n}\n\nexport const error = (message: string): void => {\n p.log.error(chalk.bold(message))\n}\n\nexport const debug = (message: string): void => {\n p.log.step(`${chalk.bgGray('[DEBUG]')} ${chalk.gray(message)}`)\n}\n\nexport const log = (message: string): void => {\n p.log.message(message)\n}\n"],"names":["
|
1
|
+
{"version":3,"sources":["../../src/utils/log.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport * as p from '@clack/prompts'\nimport chalk from 'chalk'\n\nexport const warning = (message: string): void => {\n p.log.warn(chalk.yellow('? ') + chalk.bold(message))\n}\n\nexport const info = (message: string): void => {\n p.log.step(chalk.bold(message))\n}\n\nexport const error = (message: string): void => {\n p.log.error(chalk.bold(message))\n}\n\nexport const debug = (message: string): void => {\n p.log.step(`${chalk.bgGray('[DEBUG]')} ${chalk.gray(message)}`)\n}\n\nexport const log = (message: string): void => {\n p.log.message(message)\n}\n"],"names":["p","chalk","warning","message","log","warn","yellow","bold","info","step","error","debug","bgGray","gray"],"mappings":"AAAA,6BAA6B,GAC7B,YAAYA,OAAO,iBAAgB;AACnC,OAAOC,WAAW,QAAO;AAEzB,OAAO,MAAMC,UAAU,CAACC;IACtBH,EAAEI,GAAG,CAACC,IAAI,CAACJ,MAAMK,MAAM,CAAC,QAAQL,MAAMM,IAAI,CAACJ;AAC7C,EAAC;AAED,OAAO,MAAMK,OAAO,CAACL;IACnBH,EAAEI,GAAG,CAACK,IAAI,CAACR,MAAMM,IAAI,CAACJ;AACxB,EAAC;AAED,OAAO,MAAMO,QAAQ,CAACP;IACpBH,EAAEI,GAAG,CAACM,KAAK,CAACT,MAAMM,IAAI,CAACJ;AACzB,EAAC;AAED,OAAO,MAAMQ,QAAQ,CAACR;IACpBH,EAAEI,GAAG,CAACK,IAAI,CAAC,CAAC,EAAER,MAAMW,MAAM,CAAC,WAAW,CAAC,EAAEX,MAAMY,IAAI,CAACV,SAAS,CAAC;AAChE,EAAC;AAED,OAAO,MAAMC,MAAM,CAACD;IAClBH,EAAEI,GAAG,CAACD,OAAO,CAACA;AAChB,EAAC"}
|