create-sprint 0.0.58 → 0.0.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/dist/generators.js +12 -6
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/src/generators.ts +12 -6
- package/src/index.ts +3 -3
package/dist/generators.js
CHANGED
|
@@ -233,11 +233,12 @@ export const adminUsersController: Handler = (req: SprintRequest, res: SprintRes
|
|
|
233
233
|
});
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
+
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
237
|
+
|
|
236
238
|
export const jwtGenerateController: Handler = (req: SprintRequest, res: SprintResponse) => {
|
|
237
239
|
const { userId, role } = req.body || {};
|
|
238
240
|
|
|
239
241
|
try {
|
|
240
|
-
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
241
242
|
const payload = { userId, role: role || "user" };
|
|
242
243
|
const token = signEncrypted(payload, privateKey, encryptionSecret, { expiresIn: "1h" });
|
|
243
244
|
res.json({ token });
|
|
@@ -267,11 +268,12 @@ export const adminUsersController = (req: SprintRequest, res: SprintResponse) =>
|
|
|
267
268
|
});
|
|
268
269
|
};
|
|
269
270
|
|
|
271
|
+
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
272
|
+
|
|
270
273
|
export const jwtGenerateController = (req: SprintRequest, res: SprintResponse) => {
|
|
271
274
|
const { userId, role } = req.body || {};
|
|
272
275
|
|
|
273
276
|
try {
|
|
274
|
-
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
275
277
|
const payload = { userId, role: role || "user" };
|
|
276
278
|
const token = signEncrypted(payload, privateKey, encryptionSecret, { expiresIn: "1h" });
|
|
277
279
|
res.json({ token });
|
|
@@ -603,19 +605,23 @@ initTelemetry({
|
|
|
603
605
|
export function getEnvExample(telemetry) {
|
|
604
606
|
let env = `PORT=5000
|
|
605
607
|
|
|
608
|
+
JWT_PUBLIC_KEY=""
|
|
609
|
+
JWT_PRIVATE_KEY=""
|
|
610
|
+
JWT_ENCRYPTION_SECRET=""
|
|
611
|
+
|
|
606
612
|
# Development: npm run dev (NODE_ENV=development)
|
|
607
613
|
# Production: npm start (NODE_ENV=production)
|
|
608
614
|
`;
|
|
609
615
|
if (telemetry === "sentry" || telemetry === "glitchtip") {
|
|
610
616
|
env += `
|
|
611
617
|
# Sentry / GlitchTip (use GlitchTip DSN for self-hosted)
|
|
612
|
-
SENTRY_DSN=
|
|
618
|
+
SENTRY_DSN=""
|
|
613
619
|
`;
|
|
614
620
|
}
|
|
615
621
|
else if (telemetry === "discord") {
|
|
616
622
|
env += `
|
|
617
623
|
# Discord Webhook URL for error notifications
|
|
618
|
-
DISCORD_TELEMETRY_WEBHOOK_URL=
|
|
624
|
+
DISCORD_TELEMETRY_WEBHOOK_URL=""
|
|
619
625
|
`;
|
|
620
626
|
}
|
|
621
627
|
return env;
|
|
@@ -634,13 +640,13 @@ JWT_ENCRYPTION_SECRET='${crypto.randomBytes(32).toString("hex")}'
|
|
|
634
640
|
if (telemetry === "sentry" || telemetry === "glitchtip") {
|
|
635
641
|
env += `
|
|
636
642
|
# Sentry / GlitchTip
|
|
637
|
-
SENTRY_DSN=
|
|
643
|
+
SENTRY_DSN=""
|
|
638
644
|
`;
|
|
639
645
|
}
|
|
640
646
|
else if (telemetry === "discord") {
|
|
641
647
|
env += `
|
|
642
648
|
# Discord Webhook URL
|
|
643
|
-
DISCORD_TELEMETRY_WEBHOOK_URL=
|
|
649
|
+
DISCORD_TELEMETRY_WEBHOOK_URL=""
|
|
644
650
|
`;
|
|
645
651
|
}
|
|
646
652
|
return env;
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { join } from "path";
|
|
|
5
5
|
import color from "picocolors";
|
|
6
6
|
import * as p from "@clack/prompts";
|
|
7
7
|
import { validateProjectName } from "./validators.js";
|
|
8
|
-
import { getTypeScriptPackageJson, getJavaScriptPackageJson, getTsConfig, getViteConfig, getMainFile, getHomeRoute, getAdminRoute, getHomeController, getAdminController, getInternalAuthMiddleware, getUserAuthMiddleware, getHomeSchema, getAdminSchema, getDockerfile, getDockerCompose, getGitignore, getDockerIgnore, getSprintConfigFile, getEnvDevelopment, getEnvProduction, getExampleCronJob } from "./generators.js";
|
|
8
|
+
import { getTypeScriptPackageJson, getJavaScriptPackageJson, getTsConfig, getViteConfig, getMainFile, getHomeRoute, getAdminRoute, getHomeController, getAdminController, getEnvExample, getInternalAuthMiddleware, getUserAuthMiddleware, getHomeSchema, getAdminSchema, getDockerfile, getDockerCompose, getGitignore, getDockerIgnore, getSprintConfigFile, getEnvDevelopment, getEnvProduction, getExampleCronJob } from "./generators.js";
|
|
9
9
|
export async function writeFile(path, content, options) {
|
|
10
10
|
if (typeof content === "string")
|
|
11
11
|
content = content.trimEnd();
|
|
@@ -184,8 +184,8 @@ async function createProject(projectName, language, telemetry, useDocker) {
|
|
|
184
184
|
await writeFile(join(srcDir, "schemas", "home." + (language === "typescript" ? "ts" : "js")), getHomeSchema(language));
|
|
185
185
|
await writeFile(join(srcDir, "schemas", "admin." + (language === "typescript" ? "ts" : "js")), getAdminSchema(language));
|
|
186
186
|
await writeFile(join(srcDir, "cronjobs", "example." + (language === "typescript" ? "ts" : "js")), getExampleCronJob(language));
|
|
187
|
-
await writeFile(join(targetDir, ".env.development.example"),
|
|
188
|
-
await writeFile(join(targetDir, ".env.production.example"),
|
|
187
|
+
await writeFile(join(targetDir, ".env.development.example"), getEnvExample(telemetry));
|
|
188
|
+
await writeFile(join(targetDir, ".env.production.example"), getEnvExample(telemetry));
|
|
189
189
|
await writeFile(join(targetDir, ".env.development"), getEnvDevelopment(telemetry));
|
|
190
190
|
await writeFile(join(targetDir, ".env.production"), getEnvProduction(telemetry));
|
|
191
191
|
await writeFile(join(targetDir, ".gitignore"), getGitignore());
|
package/package.json
CHANGED
package/src/generators.ts
CHANGED
|
@@ -252,11 +252,12 @@ export const adminUsersController: Handler = (req: SprintRequest, res: SprintRes
|
|
|
252
252
|
});
|
|
253
253
|
};
|
|
254
254
|
|
|
255
|
+
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
256
|
+
|
|
255
257
|
export const jwtGenerateController: Handler = (req: SprintRequest, res: SprintResponse) => {
|
|
256
258
|
const { userId, role } = req.body || {};
|
|
257
259
|
|
|
258
260
|
try {
|
|
259
|
-
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
260
261
|
const payload = { userId, role: role || "user" };
|
|
261
262
|
const token = signEncrypted(payload, privateKey, encryptionSecret, { expiresIn: "1h" });
|
|
262
263
|
res.json({ token });
|
|
@@ -285,11 +286,12 @@ export const adminUsersController = (req: SprintRequest, res: SprintResponse) =>
|
|
|
285
286
|
});
|
|
286
287
|
};
|
|
287
288
|
|
|
289
|
+
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
290
|
+
|
|
288
291
|
export const jwtGenerateController = (req: SprintRequest, res: SprintResponse) => {
|
|
289
292
|
const { userId, role } = req.body || {};
|
|
290
293
|
|
|
291
294
|
try {
|
|
292
|
-
const { privateKey, encryptionSecret } = getJwtFromEnv();
|
|
293
295
|
const payload = { userId, role: role || "user" };
|
|
294
296
|
const token = signEncrypted(payload, privateKey, encryptionSecret, { expiresIn: "1h" });
|
|
295
297
|
res.json({ token });
|
|
@@ -634,6 +636,10 @@ initTelemetry({
|
|
|
634
636
|
export function getEnvExample(telemetry: string) {
|
|
635
637
|
let env = `PORT=5000
|
|
636
638
|
|
|
639
|
+
JWT_PUBLIC_KEY=""
|
|
640
|
+
JWT_PRIVATE_KEY=""
|
|
641
|
+
JWT_ENCRYPTION_SECRET=""
|
|
642
|
+
|
|
637
643
|
# Development: npm run dev (NODE_ENV=development)
|
|
638
644
|
# Production: npm start (NODE_ENV=production)
|
|
639
645
|
`;
|
|
@@ -641,12 +647,12 @@ export function getEnvExample(telemetry: string) {
|
|
|
641
647
|
if (telemetry === "sentry" || telemetry === "glitchtip") {
|
|
642
648
|
env += `
|
|
643
649
|
# Sentry / GlitchTip (use GlitchTip DSN for self-hosted)
|
|
644
|
-
SENTRY_DSN=
|
|
650
|
+
SENTRY_DSN=""
|
|
645
651
|
`;
|
|
646
652
|
} else if (telemetry === "discord") {
|
|
647
653
|
env += `
|
|
648
654
|
# Discord Webhook URL for error notifications
|
|
649
|
-
DISCORD_TELEMETRY_WEBHOOK_URL=
|
|
655
|
+
DISCORD_TELEMETRY_WEBHOOK_URL=""
|
|
650
656
|
`;
|
|
651
657
|
}
|
|
652
658
|
|
|
@@ -669,12 +675,12 @@ JWT_ENCRYPTION_SECRET='${crypto.randomBytes(32).toString("hex")}'
|
|
|
669
675
|
if (telemetry === "sentry" || telemetry === "glitchtip") {
|
|
670
676
|
env += `
|
|
671
677
|
# Sentry / GlitchTip
|
|
672
|
-
SENTRY_DSN=
|
|
678
|
+
SENTRY_DSN=""
|
|
673
679
|
`;
|
|
674
680
|
} else if (telemetry === "discord") {
|
|
675
681
|
env += `
|
|
676
682
|
# Discord Webhook URL
|
|
677
|
-
DISCORD_TELEMETRY_WEBHOOK_URL=
|
|
683
|
+
DISCORD_TELEMETRY_WEBHOOK_URL=""
|
|
678
684
|
`;
|
|
679
685
|
}
|
|
680
686
|
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { join } from "path";
|
|
|
5
5
|
import color from "picocolors";
|
|
6
6
|
import * as p from "@clack/prompts";
|
|
7
7
|
import { validateProjectName } from "./validators.js";
|
|
8
|
-
import { getTypeScriptPackageJson, getJavaScriptPackageJson, getTsConfig, getViteConfig, getMainFile, getHomeRoute, getAdminRoute, getHomeController, getAdminController, getInternalAuthMiddleware, getUserAuthMiddleware, getHomeSchema, getAdminSchema, getDockerfile, getDockerCompose, getGitignore, getDockerIgnore, getSprintConfigFile, getEnvDevelopment, getEnvProduction, getExampleCronJob } from "./generators.js";
|
|
8
|
+
import { getTypeScriptPackageJson, getJavaScriptPackageJson, getTsConfig, getViteConfig, getMainFile, getHomeRoute, getAdminRoute, getHomeController, getAdminController, getEnvExample, getInternalAuthMiddleware, getUserAuthMiddleware, getHomeSchema, getAdminSchema, getDockerfile, getDockerCompose, getGitignore, getDockerIgnore, getSprintConfigFile, getEnvDevelopment, getEnvProduction, getExampleCronJob } from "./generators.js";
|
|
9
9
|
|
|
10
10
|
export interface CLIOptions {
|
|
11
11
|
projectName?: string;
|
|
@@ -235,8 +235,8 @@ async function createProject(
|
|
|
235
235
|
|
|
236
236
|
await writeFile(join(srcDir, "cronjobs", "example." + (language === "typescript" ? "ts" : "js")), getExampleCronJob(language));
|
|
237
237
|
|
|
238
|
-
await writeFile(join(targetDir, ".env.development.example"),
|
|
239
|
-
await writeFile(join(targetDir, ".env.production.example"),
|
|
238
|
+
await writeFile(join(targetDir, ".env.development.example"), getEnvExample(telemetry));
|
|
239
|
+
await writeFile(join(targetDir, ".env.production.example"), getEnvExample(telemetry));
|
|
240
240
|
|
|
241
241
|
await writeFile(join(targetDir, ".env.development"), getEnvDevelopment(telemetry));
|
|
242
242
|
await writeFile(join(targetDir, ".env.production"), getEnvProduction(telemetry));
|