@tymber/create 0.0.1 → 0.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.
Files changed (2) hide show
  1. package/dist/index.js +20 -11
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -627,12 +627,21 @@ var bunEntrypointTemplate = "import { App } from \"@tymber/core\";\n<% if (db ==
627
627
 
628
628
  var helloWorldTemplate = "import { Endpoint, type HttpContext } from \"@tymber/core\";\n\nexport class HelloWorld extends Endpoint {\n async handle(ctx: HttpContext) {\n return Response.json({ message: \"Hello World\" });\n }\n}\n";
629
629
 
630
- var setupTestTemplate = "import { createTestDB } from \"@tymber/<%= db %>\";\nimport { type BaseTestContext, createTestApp } from \"@tymber/core\";\n<% if (modules.includes(\"admin\")) { %>\nimport { AdminModule, initTestDB } from \"@tymber/admin\";\n<% } %>\n<% if (modules.includes(\"config\")) { %>\nimport { ConfigModule } from \"@tymber/config\";\n<% } %>\n<% if (modules.includes(\"openapi\")) { %>\nimport { OpenApiModule } from \"@tymber/openapi\";\n<% } %>\n<% if (modules.includes(\"user\")) { %>\nimport { UserModule } from \"@tymber/user\";\n<% } %>\nimport { MainModule } from \"../src/module.js\";\n\nexport interface TestContext extends BaseTestContext {}\n\nexport async function setup(): Promise<TestContext> {\n const ctx = await createTestApp(() => createTestDB(), [\n <% if (modules.includes(\"admin\")) { %>\n AdminModule,\n <% } %>\n <% if (modules.includes(\"config\")) { %>\n ConfigModule,\n <% } %>\n <% if (modules.includes(\"openapi\")) { %>\n OpenApiModule,\n <% } %>\n <% if (modules.includes(\"user\")) { %>\n UserModule,\n <% } %>\n MainModule\n ]);\n\n <% if (modules.includes(\"admin\")) { %>\n const { adminSessionId, adminUserId } = await initTestDB(ctx.db);\n <% } %>\n <% if (modules.includes(\"config\")) { %>\n process.env.CONFIG_SECRET_KEYS = \"S3cr3T\";\n <% } %>\n\n return {\n ...ctx,\n };\n}\n";
630
+ var setupTestTemplate = "import { createTestDB } from \"@tymber/<%= db %>\";\n<% if (modules.includes(\"admin\")) { %>\nimport {\n type BaseTestContext,\n type AdminUserId,\n createTestApp,\n} from \"@tymber/core\";\nimport { AdminModule, initTestDB } from \"@tymber/admin\";\n<% } else { %>\nimport { type BaseTestContext, createTestApp } from \"@tymber/core\";\n<% } %>\n<% if (modules.includes(\"config\")) { %>\nimport { ConfigModule } from \"@tymber/config\";\n<% } %>\n<% if (modules.includes(\"openapi\")) { %>\nimport { OpenApiModule } from \"@tymber/openapi\";\n<% } %>\n<% if (modules.includes(\"user\")) { %>\nimport { UserModule } from \"@tymber/user\";\n<% } %>\nimport { MainModule } from \"../src/module.js\";\n\nexport interface TestContext extends BaseTestContext {\n <% if (modules.includes(\"admin\")) { %>\n adminSessionId: string;\n adminUserId: AdminUserId;\n <% } %>\n}\n\nexport async function setup(): Promise<TestContext> {\n const ctx = await createTestApp(() => createTestDB(), [\n <% if (modules.includes(\"admin\")) { %>\n AdminModule,\n <% } %>\n <% if (modules.includes(\"config\")) { %>\n ConfigModule,\n <% } %>\n <% if (modules.includes(\"openapi\")) { %>\n OpenApiModule,\n <% } %>\n <% if (modules.includes(\"user\")) { %>\n UserModule,\n <% } %>\n MainModule\n ]);\n <% if (modules.includes(\"admin\")) { %>\n const { adminSessionId, adminUserId } = await initTestDB(ctx.db);\n <% } %>\n <% if (modules.includes(\"config\")) { %>\n process.env.CONFIG_SECRET_KEYS = \"S3cr3T\";\n <% } %>\n\n return {\n ...ctx,\n <% if (modules.includes(\"admin\")) { %>\n adminSessionId,\n adminUserId,\n <% } %>\n };\n}\n";
631
631
 
632
- var helloWorldTestTemplate = "<% if (isBunRuntime) { %>\nimport { describe, it, beforeAll, afterAll } from \"bun:test\";\n<% } else { %>\nimport { describe, it, before, after } from \"node:test\";\n<% } %>\nimport * as assert from \"node:assert\";\nimport { setup, type TestContext } from \"../setup.js\";\n\ndescribe(\"HelloWorld\", () => {\n let ctx: TestContext;\n\n before<% if (isBunRuntime) { %>All<% } %>(async () => {\n ctx = await setup();\n });\n\n after<% if (isBunRuntime) { %>All<% } %>(() => ctx.close());\n\n it(\"should work\", async () => {\n const res = await fetch(`${ctx.baseUrl}/hello`);\n\n assert.equal(res.status, 200);\n });\n});\n";
632
+ var helloWorldTestTemplate = "<% if (isBunPackageManager) { %>\nimport { describe, it, beforeAll, afterAll } from \"bun:test\";\n<% } else { %>\nimport { describe, it, before, after } from \"node:test\";\n<% } %>\nimport * as assert from \"node:assert\";\nimport { setup, type TestContext } from \"../setup.js\";\n\ndescribe(\"HelloWorld\", () => {\n let ctx: TestContext;\n\n before<% if (isBunPackageManager) { %>All<% } %>(async () => {\n ctx = await setup();\n });\n\n after<% if (isBunPackageManager) { %>All<% } %>(() => ctx.close());\n\n it(\"should work\", async () => {\n const res = await fetch(`${ctx.baseUrl}/hello`);\n\n assert.equal(res.status, 200);\n });\n});\n";
633
633
 
634
- // @ts-expect-error unknown global
635
- const isBunRuntime = typeof Bun !== "undefined";
634
+ const packageManager = (() => {
635
+ const userAgent = process.env.npm_config_user_agent ?? "";
636
+ if (userAgent.startsWith("bun/"))
637
+ return "bun";
638
+ if (userAgent.startsWith("pnpm/"))
639
+ return "pnpm";
640
+ if (userAgent.startsWith("yarn/"))
641
+ return "yarn";
642
+ return "npm";
643
+ })();
644
+ const isBunPackageManager = packageManager === "bun";
636
645
  async function main() {
637
646
  ge("Welcome to Tymber project generator!");
638
647
  const { projectName, db, modules } = await he({
@@ -670,7 +679,7 @@ async function main() {
670
679
  s.start(`Creating project in ${projectDir}...`);
671
680
  const templateData = {
672
681
  projectName,
673
- isBunRuntime,
682
+ isBunPackageManager,
674
683
  db,
675
684
  modules,
676
685
  };
@@ -685,7 +694,7 @@ async function main() {
685
694
  name: projectName,
686
695
  version: "0.0.0",
687
696
  type: "module",
688
- scripts: isBunRuntime
697
+ scripts: isBunPackageManager
689
698
  ? {
690
699
  start: "bun src/entrypoint.ts",
691
700
  test: "bun test",
@@ -695,7 +704,7 @@ async function main() {
695
704
  test: "tsx --test test/**/*.test.ts",
696
705
  },
697
706
  dependencies,
698
- devDependencies: isBunRuntime
707
+ devDependencies: isBunPackageManager
699
708
  ? {
700
709
  "@types/bun": "latest",
701
710
  typescript: "latest",
@@ -710,12 +719,12 @@ async function main() {
710
719
  // package.json
711
720
  await fs.writeFile(path.join(projectDir, "package.json"), JSON.stringify(packageJsonContent, null, 2));
712
721
  // tsconfig.json
713
- await fs.writeFile(path.join(projectDir, "tsconfig.json"), compileTemplate(isBunRuntime ? bunTsconfigTemplate : nodeTsconfigTemplate)(templateData));
722
+ await fs.writeFile(path.join(projectDir, "tsconfig.json"), compileTemplate(isBunPackageManager ? bunTsconfigTemplate : nodeTsconfigTemplate)(templateData));
714
723
  // src directory
715
724
  const srcDir = path.join(projectDir, "src");
716
725
  await fs.mkdir(srcDir, { recursive: true });
717
726
  // src/entrypoint.ts
718
- await fs.writeFile(path.join(srcDir, "entrypoint.ts"), compileTemplate(isBunRuntime ? bunEntrypointTemplate : nodeEntrypointTemplate)(templateData));
727
+ await fs.writeFile(path.join(srcDir, "entrypoint.ts"), compileTemplate(isBunPackageManager ? bunEntrypointTemplate : nodeEntrypointTemplate)(templateData));
719
728
  // src/module.ts
720
729
  await fs.writeFile(path.join(srcDir, "module.ts"), compileTemplate(moduleTemplate)(templateData));
721
730
  // src/endpoints/HelloWorld.ts
@@ -737,8 +746,8 @@ async function main() {
737
746
  s.stop("Project created successfully!");
738
747
  Se(`Next steps:
739
748
  cd ${projectName}
740
- ${isBunRuntime ? "bun install" : "npm install"}
741
- ${isBunRuntime ? "bun start" : "npm start"}`, "Done!");
749
+ ${packageManager} install
750
+ ${packageManager} start`, "Done!");
742
751
  ye("Happy coding!");
743
752
  }
744
753
  main().catch((err) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tymber/create",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Scaffold a new Tymber project",
5
5
  "license": "MIT",
6
6
  "author": "Damien ARRACHEQUESNE",