@getstrata/starter 1.1.8 → 2.0.0

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 CHANGED
@@ -3060,9 +3060,9 @@ function renderPackageJson(projectName, options = {}) {
3060
3060
  "@getstrata/cli": "workspace:*",
3061
3061
  "@getstrata/core": "workspace:*"
3062
3062
  } : {
3063
- "@getstrata/bootstrap": "^1.1.8",
3064
- "@getstrata/cli": "^1.1.8",
3065
- "@getstrata/core": "^1.1.8"
3063
+ "@getstrata/bootstrap": "^2.0.0",
3064
+ "@getstrata/cli": "^2.0.0",
3065
+ "@getstrata/core": "^2.0.0"
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 and seeded.");
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, migrated, and seeded.");
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
- await seed();
4264
- console.log("Database seeded.");
4265
- process.exit(0);
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": "^1.1.8",
16
- "@getstrata/cli": "^1.1.8",
17
- "@getstrata/core": "^1.1.8",
15
+ "@getstrata/bootstrap": "^2.0.0",
16
+ "@getstrata/cli": "^2.0.0",
17
+ "@getstrata/core": "^2.0.0",
18
18
  "eta": "^4.6.0"
19
19
  },
20
20
  "devDependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/starter",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "description": "Interactive create-strata wizard. Choose each layer; one database engine.",
5
5
  "type": "module",
6
6
  "license": "MIT",