@getstrata/starter 1.1.9 → 2.0.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.
- package/dist/cli.js +17 -14
- package/dist/templates/package.json +3 -3
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -3060,9 +3060,9 @@ function renderPackageJson(projectName, options = {}) {
|
|
|
3060
3060
|
"@getstrata/cli": "workspace:*",
|
|
3061
3061
|
"@getstrata/core": "workspace:*"
|
|
3062
3062
|
} : {
|
|
3063
|
-
"@getstrata/bootstrap": "^
|
|
3064
|
-
"@getstrata/cli": "^
|
|
3065
|
-
"@getstrata/core": "^
|
|
3063
|
+
"@getstrata/bootstrap": "^2.0.1",
|
|
3064
|
+
"@getstrata/cli": "^2.0.1",
|
|
3065
|
+
"@getstrata/core": "^2.0.1"
|
|
3066
3066
|
};
|
|
3067
3067
|
coreDeps.eta = "^4.6.0";
|
|
3068
3068
|
if (options.layers?.database === "mysql") {
|
|
@@ -3072,6 +3072,7 @@ function renderPackageJson(projectName, options = {}) {
|
|
|
3072
3072
|
dev: "strata dev",
|
|
3073
3073
|
start: "strata start",
|
|
3074
3074
|
"db:migrate": "strata migrate",
|
|
3075
|
+
"db:seed:demo": "bun run src/db/seed.ts",
|
|
3075
3076
|
"db:fresh": "strata migrate:fresh",
|
|
3076
3077
|
"queue:work": "strata queue:work",
|
|
3077
3078
|
check: "tsc --noEmit"
|
|
@@ -3307,7 +3308,7 @@ function renderReadme(projectName, layers, options = {}) {
|
|
|
3307
3308
|
if (needsFrontendBuild(layers.frontend)) {
|
|
3308
3309
|
next.push("bun run frontend:install", "bun run frontend:build");
|
|
3309
3310
|
}
|
|
3310
|
-
next.push("bun run db:migrate", "bun run dev");
|
|
3311
|
+
next.push("bun run db:migrate", "bun run db:seed:demo", "bun run dev");
|
|
3311
3312
|
const extras = Object.entries(layers.extras).filter(([, on]) => on).map(([key]) => key);
|
|
3312
3313
|
const dockerServices = selectedDockerServices(layers);
|
|
3313
3314
|
const neededTools = neededDockerServices(layers);
|
|
@@ -3389,7 +3390,7 @@ docker build -t ${projectName} .
|
|
|
3389
3390
|
docker run --rm -p 3000:3000 --env-file .env.production ${projectName}
|
|
3390
3391
|
\`\`\`
|
|
3391
3392
|
|
|
3392
|
-
Migrations are a deploy step, not a boot step: run \`docker run --rm --env-file .env.production ${projectName} bun run db:migrate\` before the new version takes traffic.${layers.database === "sqlite" ? " SQLite stores its file in `/app/storage`; mount a volume there (`-v strata_data:/app/storage`) or the data is lost with the container." : ""}
|
|
3393
|
+
Migrations are a deploy step, not a boot step: run \`docker run --rm --env-file .env.production ${projectName} bun run db:migrate\` before the new version takes traffic. Migrations and resets do not seed by default. Demo seeding is an explicit development command, \`bun run db:seed:demo\`, and refuses production/staging. Existing demo accounts must be disabled or have their credentials and sessions/tokens rotated before deployment.${layers.database === "sqlite" ? " SQLite stores its file in `/app/storage`; mount a volume there (`-v strata_data:/app/storage`) or the data is lost with the container." : ""}
|
|
3393
3394
|
The image sets \`APP_ENV=production\` and \`AUTH_DEV_HEADERS=false\`; everything else in the Production list below comes from your environment (the \`.env.production\` file above is one way).
|
|
3394
3395
|
|
|
3395
3396
|
## Production
|
|
@@ -3962,8 +3963,10 @@ function renderMigrateTs(layers) {
|
|
|
3962
3963
|
return `${hashImport}${rlsBypassImport}${ensureImport(layers)}${databaseImport}import { migrateDatabase } from "@getstrata/core/database/migrations";
|
|
3963
3964
|
import { Note } from "../models/Note.ts";
|
|
3964
3965
|
${userImport}import { loadStarterMigrations, withMigrationDatabase } from "./migrationRuntime.ts";
|
|
3966
|
+
import { isProductionEnv } from "@getstrata/core/runtime/appEnv";
|
|
3965
3967
|
|
|
3966
3968
|
export async function seed() {
|
|
3969
|
+
if (isProductionEnv()) throw new Error("Demo seeding is disabled in production and staging.");
|
|
3967
3970
|
${ensureCall(layers)}${bindSql}${seedOpen}${seedTenant}
|
|
3968
3971
|
if ((await Note.query().value("id")) === null) {
|
|
3969
3972
|
${noteCreate}
|
|
@@ -3974,7 +3977,6 @@ export async function migrate() {
|
|
|
3974
3977
|
${ensureCall(layers)} await withMigrationDatabase(async (db) => {
|
|
3975
3978
|
await migrateDatabase(db, await loadStarterMigrations());
|
|
3976
3979
|
});
|
|
3977
|
-
await seed();
|
|
3978
3980
|
}
|
|
3979
3981
|
|
|
3980
3982
|
/** The CLI calls this after migrate() so pooled drivers do not hold the process open. */
|
|
@@ -3984,7 +3986,7 @@ export async function close() {
|
|
|
3984
3986
|
|
|
3985
3987
|
if (import.meta.main) {
|
|
3986
3988
|
await migrate();
|
|
3987
|
-
console.log("Database migrated
|
|
3989
|
+
console.log("Database migrated.");
|
|
3988
3990
|
await close();
|
|
3989
3991
|
process.exit(0);
|
|
3990
3992
|
}
|
|
@@ -4231,14 +4233,12 @@ function dropTables(layers) {
|
|
|
4231
4233
|
function renderFreshTs(layers) {
|
|
4232
4234
|
return `${ensureImport(layers)}import { freshDatabase } from "@getstrata/core/database/migrations";
|
|
4233
4235
|
import { closeDatabase } from "../bootstrap/database.ts";
|
|
4234
|
-
import { seed } from "./migrate.ts";
|
|
4235
4236
|
import { loadStarterMigrations, withMigrationDatabase } from "./migrationRuntime.ts";
|
|
4236
4237
|
|
|
4237
4238
|
export async function fresh() {
|
|
4238
4239
|
${ensureCall(layers)} await withMigrationDatabase(async (db) => {
|
|
4239
4240
|
await freshDatabase(db, await loadStarterMigrations());
|
|
4240
4241
|
});
|
|
4241
|
-
await seed();
|
|
4242
4242
|
}
|
|
4243
4243
|
|
|
4244
4244
|
/** The CLI calls this after fresh() so pooled drivers do not hold the process open. */
|
|
@@ -4248,21 +4248,24 @@ export async function close() {
|
|
|
4248
4248
|
|
|
4249
4249
|
if (import.meta.main) {
|
|
4250
4250
|
await fresh();
|
|
4251
|
-
console.log("Database reset
|
|
4251
|
+
console.log("Database reset and migrated.");
|
|
4252
4252
|
await close();
|
|
4253
4253
|
process.exit(0);
|
|
4254
4254
|
}
|
|
4255
4255
|
`;
|
|
4256
4256
|
}
|
|
4257
4257
|
function renderSeedTs() {
|
|
4258
|
-
return `import { seed } from "./migrate.ts";
|
|
4258
|
+
return `import { close, seed } from "./migrate.ts";
|
|
4259
4259
|
|
|
4260
4260
|
export { seed };
|
|
4261
4261
|
|
|
4262
4262
|
if (import.meta.main) {
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4263
|
+
try {
|
|
4264
|
+
await seed();
|
|
4265
|
+
console.log("Demo database seeded.");
|
|
4266
|
+
} finally {
|
|
4267
|
+
await close();
|
|
4268
|
+
}
|
|
4266
4269
|
}
|
|
4267
4270
|
`;
|
|
4268
4271
|
}
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"check": "tsc --noEmit"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@getstrata/bootstrap": "^
|
|
16
|
-
"@getstrata/cli": "^
|
|
17
|
-
"@getstrata/core": "^
|
|
15
|
+
"@getstrata/bootstrap": "^2.0.1",
|
|
16
|
+
"@getstrata/cli": "^2.0.1",
|
|
17
|
+
"@getstrata/core": "^2.0.1",
|
|
18
18
|
"eta": "^4.6.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|