create-reciple 7.11.14 → 8.0.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/bin.js +105 -0
  2. package/dist/bin.js.map +1 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.js +4 -0
  5. package/dist/index.js.map +1 -0
  6. package/{bin → dist}/utils/constants.d.ts +15 -7
  7. package/dist/utils/constants.js +60 -0
  8. package/dist/utils/constants.js.map +1 -0
  9. package/dist/utils/helpers.d.ts +12 -0
  10. package/dist/utils/helpers.js +103 -0
  11. package/dist/utils/helpers.js.map +1 -0
  12. package/dist/utils/types.d.ts +19 -0
  13. package/package.json +21 -14
  14. package/templates/{javascript-esm → cjs}/dot.gitignore +130 -130
  15. package/templates/cjs/modules/example.js +49 -0
  16. package/templates/{javascript → cjs}/package.json +3 -2
  17. package/templates/cjs/template.json +4 -0
  18. package/templates/{javascript → cts}/dot.gitignore +133 -130
  19. package/templates/{typescript → cts}/package.json +20 -19
  20. package/templates/cts/src/example.ts +44 -0
  21. package/templates/cts/template.json +4 -0
  22. package/templates/{typescript → cts}/tsconfig.json +13 -13
  23. package/templates/{typescript → mjs}/dot.gitignore +130 -133
  24. package/templates/mjs/modules/example.js +47 -0
  25. package/templates/{javascript-esm → mjs}/package.json +3 -3
  26. package/templates/mjs/template.json +4 -0
  27. package/templates/{typescript-esm → mts}/dot.gitignore +133 -133
  28. package/templates/{typescript-esm → mts}/package.json +20 -20
  29. package/templates/mts/src/example.ts +44 -0
  30. package/templates/mts/template.json +4 -0
  31. package/templates/{typescript-esm → mts}/tsconfig.json +13 -13
  32. package/assets/README.md +0 -257
  33. package/bin/bin.js +0 -95
  34. package/bin/bin.js.map +0 -1
  35. package/bin/create.d.ts +0 -2
  36. package/bin/create.js +0 -44
  37. package/bin/create.js.map +0 -1
  38. package/bin/utils/constants.js +0 -39
  39. package/bin/utils/constants.js.map +0 -1
  40. package/bin/utils/functions.d.ts +0 -3
  41. package/bin/utils/functions.js +0 -20
  42. package/bin/utils/functions.js.map +0 -1
  43. package/bin/utils/types.d.ts +0 -1
  44. package/templates/javascript/modules/example.js +0 -40
  45. package/templates/javascript-esm/modules/example.js +0 -40
  46. package/templates/typescript/src/example.ts +0 -43
  47. package/templates/typescript-esm/src/example.ts +0 -43
  48. package/templates.json +0 -12
  49. /package/{bin → dist}/bin.d.ts +0 -0
  50. /package/{bin → dist}/utils/types.js +0 -0
  51. /package/{bin → dist}/utils/types.js.map +0 -0
package/dist/bin.js ADDED
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env node
2
+ import { packageJson, packageManagers, templatesFolder } from './utils/constants.js';
3
+ import { cancelPrompts, create, getTemplates, isDirEmpty } from './utils/helpers.js';
4
+ import { resolvePackageManager } from '@reciple/utils';
5
+ import { confirm, intro, isCancel, outro, select, text } from '@clack/prompts';
6
+ import { Command } from 'commander';
7
+ import path from 'path';
8
+ import { existsSync, statSync } from 'fs';
9
+ import { kleur } from 'fallout-utility';
10
+ const command = new Command()
11
+ .name(packageJson.name)
12
+ .description(packageJson.description)
13
+ .version(packageJson.version, '-v, --version')
14
+ .argument('[dir]', 'Create template in this folder')
15
+ .option('--force', 'Force override existing files in directory', false)
16
+ .option('--typescript', 'Use typescript templates', 'null')
17
+ .option('--esm', 'Use commonjs templates', 'null')
18
+ .option('--commonjs', 'Use commonjs templates', 'null')
19
+ .option('--package-manager <npm,yarn,pnpm>', 'Set package manager', 'null');
20
+ command.parse(process.argv);
21
+ const options = command.opts();
22
+ const templates = await getTemplates(templatesFolder);
23
+ let dir = command.args[0] ?? null;
24
+ let typescript = options.typescript !== 'null' ? options.typescript : null;
25
+ let commonjs = options.esm === true ? false : options.commonjs !== 'null' ? options.commonjs : null;
26
+ let packageManager = options.packageManager !== 'null' ? options.packageManager : null;
27
+ let setup = false;
28
+ if (dir === null || typescript === null || commonjs === null || packageManager === null) {
29
+ setup = true;
30
+ intro(kleur.cyan().bold(`${packageJson.name} v${packageJson.version}`));
31
+ }
32
+ if (dir === null) {
33
+ const newDir = await text({
34
+ message: `Enter project directory`,
35
+ placeholder: `Leave empty to use current directory`,
36
+ defaultValue: process.cwd(),
37
+ validate: value => {
38
+ const dir = path.resolve(value);
39
+ if (!existsSync(dir))
40
+ return;
41
+ if (!statSync(dir).isDirectory())
42
+ return 'Invalid folder directory';
43
+ }
44
+ });
45
+ if (isCancel(newDir))
46
+ cancelPrompts();
47
+ dir = newDir;
48
+ }
49
+ dir = path.resolve(dir);
50
+ if (!options.force && !(await isDirEmpty(dir))) {
51
+ const override = await confirm({
52
+ message: `Directory is not empty! Would you like to override its existing files?`,
53
+ initialValue: false,
54
+ active: `Yes`,
55
+ inactive: `No`
56
+ });
57
+ if (isCancel(override) || override === false)
58
+ cancelPrompts();
59
+ }
60
+ if (typescript === null) {
61
+ const isTypescript = await confirm({
62
+ message: `Would you like to use typescript?`,
63
+ initialValue: false,
64
+ active: `Yes`,
65
+ inactive: `No`
66
+ });
67
+ if (isCancel(isTypescript))
68
+ cancelPrompts();
69
+ typescript = isTypescript;
70
+ }
71
+ if (commonjs === null) {
72
+ const isESM = await confirm({
73
+ message: `Would you like to use ES Modules? (uses import() instead of require())`,
74
+ initialValue: true,
75
+ active: `Yes`,
76
+ inactive: `No`
77
+ });
78
+ if (isCancel(isESM))
79
+ cancelPrompts();
80
+ commonjs = !isESM;
81
+ }
82
+ if (packageManager === null) {
83
+ const resolvedPackageManager = resolvePackageManager();
84
+ let firstPackageManagerIndex = packageManagers.findIndex(p => resolvedPackageManager && resolvedPackageManager === p.value);
85
+ firstPackageManagerIndex = firstPackageManagerIndex === -1 ? packageManagers.length - 1 : firstPackageManagerIndex;
86
+ const newPackageManager = await select({
87
+ message: 'Select your preferred package manager',
88
+ options: [
89
+ packageManagers[firstPackageManagerIndex],
90
+ ...packageManagers.filter((p, i) => i !== firstPackageManagerIndex)
91
+ ]
92
+ });
93
+ if (isCancel(newPackageManager))
94
+ cancelPrompts();
95
+ packageManager = newPackageManager !== 'none' ? newPackageManager : null;
96
+ }
97
+ const template = templates.find(p => p.type === (commonjs ? 'commonjs' : 'module') && p.language === (typescript ? 'Typescript' : 'Javascript'));
98
+ if (!template)
99
+ cancelPrompts({ reason: `Template not found` });
100
+ if (packageManager && !packageManagers.some(p => p.value === packageManager))
101
+ cancelPrompts({ reason: `Invalid package manager` });
102
+ if (setup)
103
+ outro(`Setup Done! Creating from ${kleur.cyan().bold(template.name)} template`);
104
+ await create(template, dir, packageManager ?? undefined);
105
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './utils/constants.js';
2
+ export * from './utils/helpers.js';
3
+ export * from './utils/types.js';
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './utils/constants.js';
2
+ export * from './utils/helpers.js';
3
+ export * from './utils/types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
@@ -1,12 +1,20 @@
1
+ import { PackageJson } from 'fallout-utility/types';
2
+ import { PackageManager } from '@reciple/utils';
1
3
  export declare const root: string;
2
- export declare const packageJSON: any;
4
+ export declare const templatesFolder: string;
5
+ export declare const packageJson: PackageJson;
6
+ export declare const packageManagers: {
7
+ label?: string;
8
+ hint?: string;
9
+ value: PackageManager | 'none';
10
+ }[];
3
11
  export declare const packages: {
4
- TYPES_NODE: any;
5
- TYPESCRIPT: any;
6
- RIMRAF: any;
7
- RECIPLE: any;
8
- DISCORDJS: any;
9
- NODEMON: any;
12
+ TYPES_NODE: string | undefined;
13
+ TYPESCRIPT: string | undefined;
14
+ RIMRAF: string | undefined;
15
+ RECIPLE: string | undefined;
16
+ DISCORDJS: string | undefined;
17
+ NODEMON: string | undefined;
10
18
  };
11
19
  export declare const packageManagerPlaceholders: {
12
20
  npm: {
@@ -0,0 +1,60 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import path from 'node:path';
3
+ import { readFile } from 'node:fs/promises';
4
+ export const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '../../');
5
+ export const templatesFolder = path.join(root, 'templates');
6
+ export const packageJson = JSON.parse(await readFile(path.join(root, 'package.json'), 'utf-8'));
7
+ export const packageManagers = [
8
+ {
9
+ label: 'npm',
10
+ hint: 'Uses npm as package manager',
11
+ value: 'npm'
12
+ },
13
+ {
14
+ label: 'yarn',
15
+ hint: 'Uses yarn as package manager',
16
+ value: 'yarn'
17
+ },
18
+ {
19
+ label: 'pnpm',
20
+ hint: 'Uses pnpm as package manager',
21
+ value: 'pnpm'
22
+ },
23
+ {
24
+ label: 'none',
25
+ hint: 'Setup package manager later',
26
+ value: 'none'
27
+ }
28
+ ];
29
+ export const packages = {
30
+ 'TYPES_NODE': packageJson.devDependencies['@types/node'],
31
+ 'TYPESCRIPT': packageJson.devDependencies['typescript'],
32
+ 'RIMRAF': packageJson.devDependencies['rimraf'],
33
+ 'RECIPLE': packageJson.devDependencies['reciple'],
34
+ 'DISCORDJS': packageJson.devDependencies['discord.js'],
35
+ 'NODEMON': packageJson.devDependencies['nodemon']
36
+ };
37
+ export const packageManagerPlaceholders = {
38
+ 'npm': {
39
+ 'SCRIPT_RUN': 'npm run',
40
+ 'BIN_EXEC': 'npx',
41
+ 'INSTALL_ALL': 'npm install',
42
+ 'INSTALL_PKG': 'npm install',
43
+ 'UNINSTALL_PKG': 'npm uninstall'
44
+ },
45
+ 'pnpm': {
46
+ 'SCRIPT_RUN': 'pnpm run',
47
+ 'BIN_EXEC': 'pnpm exec',
48
+ 'INSTALL_ALL': 'pnpm install',
49
+ 'INSTALL_PKG': 'pnpm add',
50
+ 'UNINSTALL_PKG': 'pnpm remove'
51
+ },
52
+ 'yarn': {
53
+ 'SCRIPT_RUN': 'yarn run',
54
+ 'BIN_EXEC': 'yarn exec',
55
+ 'INSTALL_ALL': 'yarn',
56
+ 'INSTALL_PKG': 'yarn add',
57
+ 'UNINSTALL_PKG': 'yarn remove'
58
+ }
59
+ };
60
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7G,MAAM,CAAC,MAAM,eAAe,GAAuE;IAC/F;QACI,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,KAAK;KACf;IACD;QACI,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,MAAM;KAChB;IACD;QACI,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,8BAA8B;QACpC,KAAK,EAAE,MAAM;KAChB;IACD;QACI,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,MAAM;KAChB;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,YAAY,EAAE,WAAW,CAAC,eAAgB,CAAC,aAAa,CAAC;IACzD,YAAY,EAAE,WAAW,CAAC,eAAgB,CAAC,YAAY,CAAC;IACxD,QAAQ,EAAE,WAAW,CAAC,eAAgB,CAAC,QAAQ,CAAC;IAChD,SAAS,EAAE,WAAW,CAAC,eAAgB,CAAC,SAAS,CAAC;IAClD,WAAW,EAAE,WAAW,CAAC,eAAgB,CAAC,YAAY,CAAC;IACvD,SAAS,EAAE,WAAW,CAAC,eAAgB,CAAC,SAAS,CAAC;CACrD,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACtC,KAAK,EAAE;QACH,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,aAAa;QAC5B,aAAa,EAAE,aAAa;QAC5B,eAAe,EAAE,eAAe;KACnC;IACD,MAAM,EAAE;QACJ,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,aAAa,EAAE,UAAU;QACzB,eAAe,EAAE,aAAa;KACjC;IACD,MAAM,EAAE;QACJ,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,UAAU;QACzB,eAAe,EAAE,aAAa;KACjC;CACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { TemplateMetadata } from './types.js';
2
+ import { PackageManager } from '@reciple/utils';
3
+ export declare function getTemplates(dir: string): Promise<TemplateMetadata[]>;
4
+ export declare function cancelPrompts(options?: {
5
+ reason?: string;
6
+ code?: number;
7
+ }): never;
8
+ export declare function createDotEnv(dir: string): Promise<string>;
9
+ export declare function create(template: TemplateMetadata, dir: string, packageManager?: PackageManager): Promise<void>;
10
+ export declare function recursiveCopyFiles(from: string, to: string, rename?: (f: string) => string): Promise<void>;
11
+ export declare function runScript(command: string, cwd?: string): Promise<void>;
12
+ export declare function isDirEmpty(dir: string): Promise<boolean>;
@@ -0,0 +1,103 @@
1
+ import { copyFile, mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';
2
+ import { kleur } from 'fallout-utility/strings';
3
+ import path from 'node:path';
4
+ import { cancel } from '@clack/prompts';
5
+ import { exit } from 'node:process';
6
+ import { existsSync } from 'node:fs';
7
+ import { packageManagerPlaceholders, packages, root } from './constants.js';
8
+ import { execSync } from 'node:child_process';
9
+ export async function getTemplates(dir) {
10
+ if (!existsSync(dir)) {
11
+ await mkdir(dir, { recursive: true });
12
+ return [];
13
+ }
14
+ const templates = [];
15
+ const contents = (await readdir(dir)).map(d => path.join(dir, d));
16
+ for (const file of contents) {
17
+ const statData = await stat(file);
18
+ if (!statData.isDirectory())
19
+ continue;
20
+ const id = path.basename(file);
21
+ const files = (await readdir(file)).map(d => path.join(file, d));
22
+ if (!files.includes(path.join(file, 'template.json')) || !files.includes(path.join(file, 'package.json')))
23
+ continue;
24
+ const metadata = JSON.parse(await readFile(path.join(file, 'template.json'), 'utf-8'));
25
+ const packageJson = JSON.parse(await readFile(path.join(file, 'package.json'), 'utf-8'));
26
+ const data = {
27
+ id,
28
+ name: metadata.name,
29
+ language: metadata.language,
30
+ type: packageJson.type ?? "commonjs",
31
+ files: files.filter(f => !f.endsWith('template.json')),
32
+ path: file
33
+ };
34
+ templates.push(data);
35
+ }
36
+ return templates;
37
+ }
38
+ export function cancelPrompts(options) {
39
+ cancel(options?.reason ?? 'Operation cancelled');
40
+ exit(options?.code ?? 1);
41
+ }
42
+ export async function createDotEnv(dir) {
43
+ const file = path.resolve(path.join(dir, '.env'));
44
+ let content = '';
45
+ if (existsSync(file))
46
+ content = await readFile(file, 'utf-8');
47
+ content += `\n# Replace this value to your Discord bot token from https://discord.com/developers/applications\nTOKEN=""`;
48
+ content = content.trim();
49
+ await writeFile(file, content);
50
+ return content;
51
+ }
52
+ export async function create(template, dir, packageManager) {
53
+ if (!existsSync(dir))
54
+ mkdir(dir, { recursive: true });
55
+ await recursiveCopyFiles(template.path, dir, f => f.replace('dot.', '.'));
56
+ if (existsSync(path.join(root, 'assets'))) {
57
+ await recursiveCopyFiles(path.join(root, 'assets'), dir, f => f.replace('dot.', '.'));
58
+ }
59
+ let packageJsonData = await readFile(path.join(dir, 'package.json'), 'utf-8');
60
+ const placeholders = packageManagerPlaceholders[packageManager ?? 'npm'];
61
+ for (const pkg of Object.keys(packages)) {
62
+ packageJsonData = packageJsonData.replaceAll(pkg, packages[pkg] ?? "*");
63
+ }
64
+ for (const placeholder of Object.keys(placeholders)) {
65
+ packageJsonData = packageJsonData.replaceAll(placeholder, placeholders[placeholder]);
66
+ }
67
+ await writeFile(path.join(dir, 'package.json'), packageJsonData);
68
+ if (packageManager)
69
+ runScript(placeholders['INSTALL_ALL'], dir);
70
+ runScript(`${packageManagerPlaceholders['npm']['BIN_EXEC']} reciple ${dir} --setup -c reciple.${template.type === 'commonjs' ? 'cjs' : 'mjs'}`);
71
+ await createDotEnv(dir);
72
+ console.log(`${kleur.bold(kleur.green('✔') + ' Your project is ready!')}`);
73
+ console.log(`\nStart developing:`);
74
+ if (path.relative(process.cwd(), dir) !== '') {
75
+ console.log(` • ${kleur.cyan().bold('cd ' + path.relative(process.cwd(), dir))}`);
76
+ }
77
+ if (!packageManager) {
78
+ console.log(` • ${kleur.cyan().bold(placeholders.INSTALL_ALL)} (or ${packageManagerPlaceholders.pnpm.INSTALL_ALL}, etc)`);
79
+ console.log(` • ${kleur.cyan().bold(`${placeholders.BIN_EXEC} reciple`)}`);
80
+ }
81
+ }
82
+ export async function recursiveCopyFiles(from, to, rename) {
83
+ if ((await stat(from)).isDirectory()) {
84
+ const contents = await readdir(from);
85
+ for (const content of contents) {
86
+ await recursiveCopyFiles(path.join(from, content), path.join(to, rename ? rename(content) : content));
87
+ }
88
+ return;
89
+ }
90
+ await mkdir(path.dirname(to), { recursive: true });
91
+ await copyFile(from, to);
92
+ }
93
+ export async function runScript(command, cwd) {
94
+ console.log(kleur.gray(kleur.bold('$') + ' ' + command));
95
+ execSync(`${command}`, { cwd, env: { ...process.env, FORCE_COLOR: '1' }, stdio: ['inherit', 'inherit', 'inherit'] });
96
+ }
97
+ export async function isDirEmpty(dir) {
98
+ if (!existsSync(dir))
99
+ return true;
100
+ const contents = (await readdir(dir)).filter(f => !f.startsWith('.'));
101
+ return contents.length === 0;
102
+ }
103
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ModuleType, PackageManager } from '@reciple/utils';
2
+ export interface CliOptions {
3
+ force: boolean;
4
+ typescript: boolean | 'null';
5
+ esm: boolean | 'null';
6
+ commonjs: boolean | 'null';
7
+ packageManager: PackageManager | 'null';
8
+ [k: string]: any;
9
+ }
10
+ export interface TemplateMetadata extends TemplateJson {
11
+ id: string;
12
+ type: ModuleType;
13
+ path: string;
14
+ files: string[];
15
+ }
16
+ export interface TemplateJson {
17
+ name: string;
18
+ language: 'Javascript' | 'Typescript';
19
+ }
package/package.json CHANGED
@@ -2,39 +2,46 @@
2
2
  "name": "create-reciple",
3
3
  "description": "A Reciple Discord bot project builder",
4
4
  "license": "GPL-3.0",
5
- "version": "7.11.14",
5
+ "version": "8.0.0-dev.1",
6
6
  "type": "module",
7
- "types": "./bin/bin.d.ts",
8
- "bin": "./bin/bin.js",
7
+ "types": "./dist/index.d.ts",
8
+ "module": "./dist/index.js",
9
+ "bin": "./dist/bin.js",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
9
16
  "repository": {
10
17
  "type": "git",
11
18
  "url": "https://github.com/FalloutStudios",
12
19
  "directory": "packages/create-reciple"
13
20
  },
14
21
  "scripts": {
15
- "clean": "npx rimraf ./bin",
16
- "build": "npm run clean && npx tsc"
22
+ "clean": "rimraf ./dist",
23
+ "build": "npm run clean && tsc",
24
+ "docs": "node ../docgen/dist/bin.js -i ./src/index.ts -o ./docs/docs.json"
17
25
  },
18
26
  "files": [
19
- "bin",
20
- "templates.json",
27
+ "dist",
21
28
  "templates",
22
29
  "assets",
23
30
  "README.md"
24
31
  ],
25
32
  "dependencies": {
26
33
  "@clack/prompts": "^0.7.0",
27
- "@reciple/utils": "^7.1.3",
28
- "kleur": "^4.1.5",
29
- "prompts": "^2.4.2"
34
+ "@reciple/utils": "^8.0.0-dev.0",
35
+ "commander": "^11.0.0",
36
+ "fallout-utility": "^2.7.1"
30
37
  },
31
38
  "devDependencies": {
32
- "@types/node": "^20.6.3",
39
+ "@types/node": "^20.8.3",
33
40
  "discord.js": "^14.13.0",
34
41
  "nodemon": "^3.0.1",
35
- "reciple": "^7.9.11",
36
- "rimraf": "^5.0.1",
42
+ "reciple": "^8.0.0-dev.1",
43
+ "rimraf": "^5.0.5",
37
44
  "typescript": "^5.2.2"
38
45
  },
39
- "gitHead": "44727a379456ebe0ecd124143e2a453caa8e3be3"
46
+ "gitHead": "10df5e7758f505142d2be827a587c49c863c3f40"
40
47
  }