seyfert-bot-starter 1.0.0 → 1.0.2

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.
@@ -5,33 +5,29 @@ import { fileURLToPath } from 'url';
5
5
  // src/scaffold.ts
6
6
  var PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), "..");
7
7
  var TEMPLATE_DIR = join(PROJECT_ROOT, "template");
8
- var VARIABLES = {
9
- "<PACKAGE_NAME>": (targetDir) => basename(targetDir)
10
- };
11
8
  async function scaffold(targetDir) {
12
9
  const target = resolve(targetDir);
10
+ const projectName = basename(target);
13
11
  await mkdir(target, { recursive: true });
14
- await copyTree(TEMPLATE_DIR, target);
12
+ await copyTree(TEMPLATE_DIR, target, projectName);
15
13
  return target;
16
14
  }
17
- async function copyTree(from, to) {
15
+ async function copyTree(from, to, projectName) {
18
16
  const entries = await readdir(from, { withFileTypes: true });
19
17
  for (const entry of entries) {
20
18
  const src = join(from, entry.name);
21
19
  const dest = join(to, entry.name);
22
20
  if (entry.isDirectory()) {
23
21
  await mkdir(dest, { recursive: true });
24
- await copyTree(src, dest);
22
+ await copyTree(src, dest, projectName);
25
23
  } else {
26
24
  let data = await readFile(src, "utf8");
27
- for (const [token, resolve2] of Object.entries(VARIABLES)) {
28
- data = data.replaceAll(token, resolve2(to));
29
- }
25
+ data = data.replaceAll("<PACKAGE_NAME>", projectName);
30
26
  await writeFile(dest, data, "utf8");
31
27
  }
32
28
  }
33
29
  }
34
30
 
35
31
  export { TEMPLATE_DIR, scaffold };
36
- //# sourceMappingURL=chunk-H36REW25.js.map
37
- //# sourceMappingURL=chunk-H36REW25.js.map
32
+ //# sourceMappingURL=chunk-L5ZPLS3Y.js.map
33
+ //# sourceMappingURL=chunk-L5ZPLS3Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scaffold.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,YAAA,GAAe,KAAK,OAAA,CAAQ,aAAA,CAAc,YAAY,GAAG,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAe,IAAA,CAAK,YAAA,EAAc,UAAU;AAEzD,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAAS,QAAQ,SAAS,CAAA;AAChC,EAAA,MAAM,WAAA,GAAc,SAAS,MAAM,CAAA;AACnC,EAAA,MAAM,KAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,YAAA,EAAc,MAAA,EAAQ,WAAW,CAAA;AAChD,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,IAAA,EAAc,EAAA,EAAY,WAAA,EAAoC;AACpF,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAM,KAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,GAAA,EAAK,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAM,QAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAkB,WAAW,CAAA;AACpD,MAAA,MAAM,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF","file":"chunk-L5ZPLS3Y.js","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n const projectName = basename(target);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target, projectName);\n return target;\n}\n\nasync function copyTree(from: string, to: string, projectName: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest, projectName);\n } else {\n let data = await readFile(src, \"utf8\");\n data = data.replaceAll(\"<PACKAGE_NAME>\", projectName);\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n"]}
package/dist/cli.cjs CHANGED
@@ -8,28 +8,24 @@ var url = require('url');
8
8
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
9
9
  var PROJECT_ROOT = path.join(path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli.cjs', document.baseURI).href)))), "..");
10
10
  var TEMPLATE_DIR = path.join(PROJECT_ROOT, "template");
11
- var VARIABLES = {
12
- "<PACKAGE_NAME>": (targetDir) => path.basename(targetDir)
13
- };
14
11
  async function scaffold(targetDir) {
15
12
  const target = path.resolve(targetDir);
13
+ const projectName = path.basename(target);
16
14
  await promises.mkdir(target, { recursive: true });
17
- await copyTree(TEMPLATE_DIR, target);
15
+ await copyTree(TEMPLATE_DIR, target, projectName);
18
16
  return target;
19
17
  }
20
- async function copyTree(from, to) {
18
+ async function copyTree(from, to, projectName) {
21
19
  const entries = await promises.readdir(from, { withFileTypes: true });
22
20
  for (const entry of entries) {
23
21
  const src = path.join(from, entry.name);
24
22
  const dest = path.join(to, entry.name);
25
23
  if (entry.isDirectory()) {
26
24
  await promises.mkdir(dest, { recursive: true });
27
- await copyTree(src, dest);
25
+ await copyTree(src, dest, projectName);
28
26
  } else {
29
27
  let data = await promises.readFile(src, "utf8");
30
- for (const [token, resolve2] of Object.entries(VARIABLES)) {
31
- data = data.replaceAll(token, resolve2(to));
32
- }
28
+ data = data.replaceAll("<PACKAGE_NAME>", projectName);
33
29
  await promises.writeFile(dest, data, "utf8");
34
30
  }
35
31
  }
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scaffold.ts","../src/cli.ts"],"names":["join","dirname","fileURLToPath","basename","resolve","mkdir","readdir","readFile","writeFile"],"mappings":";;;;;;;;AAIA,IAAM,YAAA,GAAeA,UAAKC,YAAA,CAAQC,iBAAA,CAAc,yPAAe,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAeF,SAAA,CAAK,YAAA,EAAc,UAAU,CAAA;AAEzD,IAAM,SAAA,GAA2D;AAAA,EAC/D,gBAAA,EAAkB,CAAC,SAAA,KAAcG,aAAA,CAAS,SAAS;AACrD,CAAA;AAEA,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAASC,aAAQ,SAAS,CAAA;AAChC,EAAA,MAAMC,cAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,cAAc,MAAM,CAAA;AACnC,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,MAAc,EAAA,EAA2B;AAC/D,EAAA,MAAM,UAAU,MAAMC,gBAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAMN,SAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAOA,SAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAMK,cAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAME,iBAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,KAAA,MAAW,CAAC,KAAA,EAAOH,QAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACxD,QAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,KAAA,EAAOA,QAAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,MAC3C;AACA,MAAA,MAAMI,kBAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF;;;AChCA,IAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,IAAK,EAAA;AAEhC,IAAI,SAAS,EAAA,EAAI;AACf,EAAA,OAAA,CAAQ,MAAM,0CAA0C,CAAA;AACxD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;AACA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,EAAA,OAAA,CAAQ,MAAM,2CAA2C,CAAA;AACzD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;AAEA,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAClC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,CAAA;AACnD,EAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AACnB,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAC1B,EAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,EAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAC1D,EAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC7B;AAEA,KAAK,IAAA,EAAK","file":"cli.cjs","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nconst VARIABLES: Record<string, (targetDir: string) => string> = {\n \"<PACKAGE_NAME>\": (targetDir) => basename(targetDir),\n};\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target);\n return target;\n}\n\nasync function copyTree(from: string, to: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest);\n } else {\n let data = await readFile(src, \"utf8\");\n for (const [token, resolve] of Object.entries(VARIABLES)) {\n data = data.replaceAll(token, resolve(to));\n }\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n","#!/usr/bin/env bun\nimport { scaffold } from \"./scaffold.js\";\n\nconst name = process.argv[2] ?? \"\";\n\nif (name === \"\") {\n console.error(\"usage: create-seyfert-bot <project-name>\");\n process.exit(1);\n}\nif (name.includes(\" \")) {\n console.error(\"error: project name must be a single word\");\n process.exit(1);\n}\n\nasync function main(): Promise<void> {\n const target = await scaffold(name);\n console.log(`scaffolded a seyfert bot at ${target}`);\n console.log(\"next:\");\n console.log(` cd ${name}`);\n console.log(\" bun install\");\n console.log(\" cp .env.example .env # add your BOT_TOKEN\");\n console.log(\" bun run dev\");\n}\n\nvoid main();\n"]}
1
+ {"version":3,"sources":["../src/scaffold.ts","../src/cli.ts"],"names":["join","dirname","fileURLToPath","resolve","basename","mkdir","readdir","readFile","writeFile"],"mappings":";;;;;;;;AAIA,IAAM,YAAA,GAAeA,UAAKC,YAAA,CAAQC,iBAAA,CAAc,yPAAe,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAeF,SAAA,CAAK,YAAA,EAAc,UAAU,CAAA;AAEzD,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAASG,aAAQ,SAAS,CAAA;AAChC,EAAA,MAAM,WAAA,GAAcC,cAAS,MAAM,CAAA;AACnC,EAAA,MAAMC,cAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,YAAA,EAAc,MAAA,EAAQ,WAAW,CAAA;AAChD,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,IAAA,EAAc,EAAA,EAAY,WAAA,EAAoC;AACpF,EAAA,MAAM,UAAU,MAAMC,gBAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAMN,SAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAOA,SAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAMK,cAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,GAAA,EAAK,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAME,iBAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAkB,WAAW,CAAA;AACpD,MAAA,MAAMC,kBAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF;;;AC3BA,IAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,IAAK,EAAA;AAEhC,IAAI,SAAS,EAAA,EAAI;AACf,EAAA,OAAA,CAAQ,MAAM,0CAA0C,CAAA;AACxD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;AACA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,EAAA,OAAA,CAAQ,MAAM,2CAA2C,CAAA;AACzD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB;AAEA,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAClC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,4BAAA,EAA+B,MAAM,CAAA,CAAE,CAAA;AACnD,EAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AACnB,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAC1B,EAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC3B,EAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAC1D,EAAA,OAAA,CAAQ,IAAI,eAAe,CAAA;AAC7B;AAEA,KAAK,IAAA,EAAK","file":"cli.cjs","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n const projectName = basename(target);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target, projectName);\n return target;\n}\n\nasync function copyTree(from: string, to: string, projectName: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest, projectName);\n } else {\n let data = await readFile(src, \"utf8\");\n data = data.replaceAll(\"<PACKAGE_NAME>\", projectName);\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n","#!/usr/bin/env bun\nimport { scaffold } from \"./scaffold.js\";\n\nconst name = process.argv[2] ?? \"\";\n\nif (name === \"\") {\n console.error(\"usage: create-seyfert-bot <project-name>\");\n process.exit(1);\n}\nif (name.includes(\" \")) {\n console.error(\"error: project name must be a single word\");\n process.exit(1);\n}\n\nasync function main(): Promise<void> {\n const target = await scaffold(name);\n console.log(`scaffolded a seyfert bot at ${target}`);\n console.log(\"next:\");\n console.log(` cd ${name}`);\n console.log(\" bun install\");\n console.log(\" cp .env.example .env # add your BOT_TOKEN\");\n console.log(\" bun run dev\");\n}\n\nvoid main();\n"]}
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bun
2
- import { scaffold } from './chunk-H36REW25.js';
2
+ import { scaffold } from './chunk-L5ZPLS3Y.js';
3
3
 
4
4
  // src/cli.ts
5
5
  var name = process.argv[2] ?? "";
package/dist/index.cjs CHANGED
@@ -8,28 +8,24 @@ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentS
8
8
  // src/scaffold.ts
9
9
  var PROJECT_ROOT = path.join(path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)))), "..");
10
10
  var TEMPLATE_DIR = path.join(PROJECT_ROOT, "template");
11
- var VARIABLES = {
12
- "<PACKAGE_NAME>": (targetDir) => path.basename(targetDir)
13
- };
14
11
  async function scaffold(targetDir) {
15
12
  const target = path.resolve(targetDir);
13
+ const projectName = path.basename(target);
16
14
  await promises.mkdir(target, { recursive: true });
17
- await copyTree(TEMPLATE_DIR, target);
15
+ await copyTree(TEMPLATE_DIR, target, projectName);
18
16
  return target;
19
17
  }
20
- async function copyTree(from, to) {
18
+ async function copyTree(from, to, projectName) {
21
19
  const entries = await promises.readdir(from, { withFileTypes: true });
22
20
  for (const entry of entries) {
23
21
  const src = path.join(from, entry.name);
24
22
  const dest = path.join(to, entry.name);
25
23
  if (entry.isDirectory()) {
26
24
  await promises.mkdir(dest, { recursive: true });
27
- await copyTree(src, dest);
25
+ await copyTree(src, dest, projectName);
28
26
  } else {
29
27
  let data = await promises.readFile(src, "utf8");
30
- for (const [token, resolve2] of Object.entries(VARIABLES)) {
31
- data = data.replaceAll(token, resolve2(to));
32
- }
28
+ data = data.replaceAll("<PACKAGE_NAME>", projectName);
33
29
  await promises.writeFile(dest, data, "utf8");
34
30
  }
35
31
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scaffold.ts"],"names":["join","dirname","fileURLToPath","basename","resolve","mkdir","readdir","readFile","writeFile"],"mappings":";;;;;;;;AAIA,IAAM,YAAA,GAAeA,UAAKC,YAAA,CAAQC,iBAAA,CAAc,2PAAe,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAeF,SAAA,CAAK,YAAA,EAAc,UAAU;AAEzD,IAAM,SAAA,GAA2D;AAAA,EAC/D,gBAAA,EAAkB,CAAC,SAAA,KAAcG,aAAA,CAAS,SAAS;AACrD,CAAA;AAEA,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAASC,aAAQ,SAAS,CAAA;AAChC,EAAA,MAAMC,cAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,cAAc,MAAM,CAAA;AACnC,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,MAAc,EAAA,EAA2B;AAC/D,EAAA,MAAM,UAAU,MAAMC,gBAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAMN,SAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAOA,SAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAMK,cAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAME,iBAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,KAAA,MAAW,CAAC,KAAA,EAAOH,QAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACxD,QAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,KAAA,EAAOA,QAAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,MAC3C;AACA,MAAA,MAAMI,kBAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF","file":"index.cjs","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nconst VARIABLES: Record<string, (targetDir: string) => string> = {\n \"<PACKAGE_NAME>\": (targetDir) => basename(targetDir),\n};\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target);\n return target;\n}\n\nasync function copyTree(from: string, to: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest);\n } else {\n let data = await readFile(src, \"utf8\");\n for (const [token, resolve] of Object.entries(VARIABLES)) {\n data = data.replaceAll(token, resolve(to));\n }\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scaffold.ts"],"names":["join","dirname","fileURLToPath","resolve","basename","mkdir","readdir","readFile","writeFile"],"mappings":";;;;;;;;AAIA,IAAM,YAAA,GAAeA,UAAKC,YAAA,CAAQC,iBAAA,CAAc,2PAAe,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAeF,SAAA,CAAK,YAAA,EAAc,UAAU;AAEzD,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAASG,aAAQ,SAAS,CAAA;AAChC,EAAA,MAAM,WAAA,GAAcC,cAAS,MAAM,CAAA;AACnC,EAAA,MAAMC,cAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,YAAA,EAAc,MAAA,EAAQ,WAAW,CAAA;AAChD,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,IAAA,EAAc,EAAA,EAAY,WAAA,EAAoC;AACpF,EAAA,MAAM,UAAU,MAAMC,gBAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAMN,SAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAOA,SAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAMK,cAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,GAAA,EAAK,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAME,iBAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,gBAAA,EAAkB,WAAW,CAAA;AACpD,MAAA,MAAMC,kBAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF","file":"index.cjs","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n const projectName = basename(target);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target, projectName);\n return target;\n}\n\nasync function copyTree(from: string, to: string, projectName: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest, projectName);\n } else {\n let data = await readFile(src, \"utf8\");\n data = data.replaceAll(\"<PACKAGE_NAME>\", projectName);\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { TEMPLATE_DIR, scaffold } from './chunk-H36REW25.js';
1
+ export { TEMPLATE_DIR, scaffold } from './chunk-L5ZPLS3Y.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seyfert-bot-starter",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Scaffold a modern Seyfert Discord bot with one command. Bun + TypeScript + Biome, zero configuration.",
5
5
  "keywords": [
6
6
  "discord",
@@ -1,26 +1,32 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.5.12/schema.json",
3
- "files": {
4
- "includes": ["**", "!**/dist", "!**/coverage", "!**/node_modules", "!**/bun.lock"]
5
- },
6
- "formatter": {
7
- "enabled": true,
8
- "indentStyle": "space",
9
- "indentWidth": 2,
10
- "lineWidth": 120,
11
- "formatWithErrors": false
12
- },
13
- "linter": {
14
- "enabled": true,
15
- "rules": {
16
- "preset": "recommended"
17
- }
18
- },
19
- "javascript": {
20
- "formatter": {
21
- "quoteStyle": "double",
22
- "semicolons": "always",
23
- "trailingCommas": "all"
24
- }
25
- }
26
- }
2
+ "$schema": "https://biomejs.dev/schemas/2.5.12/schema.json",
3
+ "files": {
4
+ "includes": [
5
+ "**",
6
+ "!**/dist",
7
+ "!**/coverage",
8
+ "!**/node_modules",
9
+ "!**/bun.lock"
10
+ ]
11
+ },
12
+ "formatter": {
13
+ "enabled": true,
14
+ "indentStyle": "space",
15
+ "indentWidth": 2,
16
+ "lineWidth": 120,
17
+ "formatWithErrors": false
18
+ },
19
+ "linter": {
20
+ "enabled": true,
21
+ "rules": {
22
+ "preset": "recommended"
23
+ }
24
+ },
25
+ "javascript": {
26
+ "formatter": {
27
+ "quoteStyle": "double",
28
+ "semicolons": "always",
29
+ "trailingCommas": "all"
30
+ }
31
+ }
32
+ }
@@ -1,22 +1,22 @@
1
1
  {
2
- "name": "<PACKAGE_NAME>",
3
- "version": "0.0.0",
4
- "type": "module",
5
- "private": true,
6
- "scripts": {
7
- "dev": "bun --watch src/index.ts",
8
- "start": "bun src/index.ts",
9
- "lint": "biome check .",
10
- "typecheck": "tsc --noEmit",
11
- "format": "biome format --write ."
12
- },
13
- "dependencies": {
14
- "@dotenvx/dotenvx": "^1.40.2",
15
- "seyfert": "^5.0.0"
16
- },
17
- "devDependencies": {
18
- "@biomejs/biome": "^2.5.7",
19
- "@types/bun": "^1.2.2",
20
- "typescript": "^5.9.0"
21
- }
22
- }
2
+ "name": "<PACKAGE_NAME>",
3
+ "version": "0.0.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "scripts": {
7
+ "dev": "bun --watch src/index.ts",
8
+ "start": "bun src/index.ts",
9
+ "lint": "biome check .",
10
+ "typecheck": "tsc --noEmit",
11
+ "format": "biome format --write ."
12
+ },
13
+ "dependencies": {
14
+ "@dotenvx/dotenvx": "^1.40.2",
15
+ "seyfert": "^5.0.0"
16
+ },
17
+ "devDependencies": {
18
+ "@biomejs/biome": "^2.5.7",
19
+ "@types/bun": "^1.2.2",
20
+ "typescript": "^5.9.0"
21
+ }
22
+ }
@@ -1,11 +1,11 @@
1
1
  import { Command, type CommandContext, Declare } from "seyfert";
2
2
 
3
3
  @Declare({
4
- name: "ping",
5
- description: "Reply with pong",
4
+ name: "ping",
5
+ description: "Reply with pong",
6
6
  })
7
7
  export default class PingCommand extends Command {
8
- run(ctx: CommandContext) {
9
- return ctx.write({ content: "Pong!" });
10
- }
11
- }
8
+ run(ctx: CommandContext) {
9
+ return ctx.write({ content: "Pong!" });
10
+ }
11
+ }
@@ -2,15 +2,15 @@ import "@dotenvx/dotenvx/config";
2
2
  import { Client } from "seyfert";
3
3
 
4
4
  const client = new Client({
5
- intents: ["Guilds", "GuildMembers", "GuildMessages", "MessageContent"],
6
- locations: {
7
- base: "src",
8
- commands: "commands",
9
- },
5
+ intents: ["Guilds", "GuildMembers", "GuildMessages", "MessageContent"],
6
+ locations: {
7
+ base: "src",
8
+ commands: "commands",
9
+ },
10
10
  });
11
11
 
12
12
  client.once("ready", () => {
13
- console.log("[seyfert] bot is online");
13
+ console.log("[seyfert] bot is online");
14
14
  });
15
15
 
16
- void client.start();
16
+ void client.start();
@@ -1,18 +1,18 @@
1
1
  {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "types": ["@types/bun"],
7
- "strict": true,
8
- "noUncheckedIndexedAccess": true,
9
- "verbatimModuleSyntax": true,
10
- "esModuleInterop": true,
11
- "forceConsistentCasingInFileNames": true,
12
- "skipLibCheck": true,
13
- "noEmit": true,
14
- "experimentalDecorators": true,
15
- "emitDecoratorMetadata": true
16
- },
17
- "include": ["src"]
18
- }
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["@types/bun"],
7
+ "strict": true,
8
+ "noUncheckedIndexedAccess": true,
9
+ "verbatimModuleSyntax": true,
10
+ "esModuleInterop": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "skipLibCheck": true,
13
+ "noEmit": true,
14
+ "experimentalDecorators": true,
15
+ "emitDecoratorMetadata": true
16
+ },
17
+ "include": ["src"]
18
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/scaffold.ts"],"names":["resolve"],"mappings":";;;;;AAIA,IAAM,YAAA,GAAe,KAAK,OAAA,CAAQ,aAAA,CAAc,YAAY,GAAG,CAAC,GAAG,IAAI,CAAA;AAEhE,IAAM,YAAA,GAAe,IAAA,CAAK,YAAA,EAAc,UAAU;AAEzD,IAAM,SAAA,GAA2D;AAAA,EAC/D,gBAAA,EAAkB,CAAC,SAAA,KAAc,QAAA,CAAS,SAAS;AACrD,CAAA;AAEA,eAAsB,SAAS,SAAA,EAAoC;AACjE,EAAA,MAAM,MAAA,GAAS,QAAQ,SAAS,CAAA;AAChC,EAAA,MAAM,KAAA,CAAM,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAM,CAAA;AACvC,EAAA,MAAM,QAAA,CAAS,cAAc,MAAM,CAAA;AACnC,EAAA,OAAO,MAAA;AACT;AAEA,eAAe,QAAA,CAAS,MAAc,EAAA,EAA2B;AAC/D,EAAA,MAAM,UAAU,MAAM,OAAA,CAAQ,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAC3D,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACjC,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,IAAI,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAM,KAAA,CAAM,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,IAAI,IAAA,GAAO,MAAM,QAAA,CAAS,GAAA,EAAK,MAAM,CAAA;AACrC,MAAA,KAAA,MAAW,CAAC,KAAA,EAAOA,QAAO,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACxD,QAAA,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,KAAA,EAAOA,QAAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,MAC3C;AACA,MAAA,MAAM,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,MAAM,CAAA;AAAA,IACpC;AAAA,EACF;AACF","file":"chunk-H36REW25.js","sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PROJECT_ROOT = join(dirname(fileURLToPath(import.meta.url)), \"..\");\n\nexport const TEMPLATE_DIR = join(PROJECT_ROOT, \"template\");\n\nconst VARIABLES: Record<string, (targetDir: string) => string> = {\n \"<PACKAGE_NAME>\": (targetDir) => basename(targetDir),\n};\n\nexport async function scaffold(targetDir: string): Promise<string> {\n const target = resolve(targetDir);\n await mkdir(target, { recursive: true });\n await copyTree(TEMPLATE_DIR, target);\n return target;\n}\n\nasync function copyTree(from: string, to: string): Promise<void> {\n const entries = await readdir(from, { withFileTypes: true });\n for (const entry of entries) {\n const src = join(from, entry.name);\n const dest = join(to, entry.name);\n if (entry.isDirectory()) {\n await mkdir(dest, { recursive: true });\n await copyTree(src, dest);\n } else {\n let data = await readFile(src, \"utf8\");\n for (const [token, resolve] of Object.entries(VARIABLES)) {\n data = data.replaceAll(token, resolve(to));\n }\n await writeFile(dest, data, \"utf8\");\n }\n }\n}\n"]}