@coreframe/scripts 0.1.4 → 0.1.5

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/config.d.ts CHANGED
@@ -8,6 +8,7 @@ type CoreframeConfig = {
8
8
  };
9
9
  type DatabaseConfig = {
10
10
  dialect: DatabaseDialect;
11
+ seed?: string;
11
12
  };
12
13
  declare function defineConfig(config: CoreframeConfig): CoreframeConfig;
13
14
  declare function readProjectConfig({
@@ -81,7 +81,9 @@ declare const coreframeCli: Partial<import("cmd-ts/dist/cjs/argparser").Register
81
81
  args: {};
82
82
  } | {
83
83
  command: "schema-check";
84
- args: {};
84
+ args: {
85
+ seed: boolean;
86
+ };
85
87
  } | {
86
88
  command: "setup";
87
89
  args: {};
@@ -168,7 +170,9 @@ declare const coreframeCli: Partial<import("cmd-ts/dist/cjs/argparser").Register
168
170
  args: {};
169
171
  } | {
170
172
  command: "schema-check";
171
- args: {};
173
+ args: {
174
+ seed: boolean;
175
+ };
172
176
  } | {
173
177
  command: "setup";
174
178
  args: {};
package/dist/coreframe.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{runDrizzleKitCommand as e}from"./db/drizzle-kit.js";import{seedLocalDb as t}from"./db/seed.js";import{migrateLocalDb as n}from"./db/migrate.js";import{resetLocalDb as r}from"./db/reset.js";import{setupLocalDb as i}from"./db/setup.js";import{ensureLocalDb as a}from"./db/ensure.js";import{migrateHeldMigrations as o}from"./db/migrate-held.js";import{checkSchemaPush as s}from"./db/schema-check.js";import{tauriReleasePlatforms as c}from"./deploy/config.js";import{deployProject as l}from"./deploy.js";import{checkDeployMigrations as u}from"./deploy/check-migrations.js";import{runDevServer as d}from"./dev.js";import{typecheckProject as f}from"./typecheck.js";import{checkUpgradeSkillCurrent as p}from"./upgrade/check-skill-current.js";import{ensureTemplateRemote as m}from"./upgrade/ensure-template-remote.js";import{fastForwardTemplateFiles as h}from"./upgrade/fast-forward-template-files.js";import{array as g,binary as _,command as v,flag as y,multioption as b,oneOf as x,option as S,optional as C,positional as w,rest as T,run as E,string as D,subcommands as O}from"cmd-ts";const k=O({name:`coreframe`,cmds:{deploy:v({name:`deploy`,args:{runMigrations:y({long:`run-migrations`,description:`Run pending deploy-safe database migrations before deploying.`,defaultValue:()=>!1}),skipMigrations:y({long:`skip-migrations`,description:`Deploy without running pending deploy-safe database migrations.`,defaultValue:()=>!1}),skipPostDeployChecks:y({long:`skip-post-deploy-checks`,description:`Skip post-deploy checks after Cloudflare deployment.`,defaultValue:()=>!1}),tauriLocalPlatforms:b({long:`tauri-local-platform`,type:g(x(c)),description:`Build one Tauri release platform locally. Repeat for multiple platforms.`,defaultValue:()=>[]}),tauriWorkflowName:S({long:`tauri-workflow-name`,type:C(D),description:`GitHub Actions workflow file or name for remote Tauri release builds.`}),tauriWorkflowPlatforms:b({long:`tauri-workflow-platform`,type:g(x(c)),description:`Build one Tauri release platform with GitHub Actions. Repeat for multiple platforms.`,defaultValue:()=>[]}),tauriWorkflowRef:S({long:`tauri-workflow-ref`,type:C(D),description:`Git ref used when dispatching remote Tauri release builds.`}),yes:y({long:`yes`,short:`y`,description:`Approve noninteractive deploy prompts.`,defaultValue:()=>!1})},handler:({runMigrations:e,skipMigrations:t,skipPostDeployChecks:n,tauriLocalPlatforms:r,tauriWorkflowName:i,tauriWorkflowPlatforms:a,tauriWorkflowRef:o,yes:s})=>l([...e?[`--run-migrations`]:[],...t?[`--skip-migrations`]:[],...n?[`--skip-post-deploy-checks`]:[],...r.flatMap(e=>[`--tauri-local-platform`,e]),...i?[`--tauri-workflow-name`,i]:[],...a.flatMap(e=>[`--tauri-workflow-platform`,e]),...o?[`--tauri-workflow-ref`,o]:[],...s?[`--yes`]:[]])}),typecheck:v({name:`typecheck`,args:{},handler:f}),dev:v({name:`dev`,args:{platform:w({type:C(x([`web`,`desktop`,`ios`,`android`])),displayName:`platform`,description:`Development target platform. Defaults to web.`})},handler:({platform:e})=>d({platform:e??`web`})}),upgrade:O({name:`upgrade`,cmds:{"ensure-template-remote":v({name:`ensure-template-remote`,args:{remote:S({long:`remote`,type:D,defaultValue:()=>`template`,description:`Remote name to ensure.`}),noFetch:y({long:`no-fetch`,description:`Do not fetch the remote after ensuring it exists.`,defaultValue:()=>!1})},handler:({noFetch:e,remote:t})=>m({fetch:!e,remote:t})}),"check-skill-current":v({name:`check-skill-current`,args:{target:S({long:`target`,type:D,description:`Target Coreframe template git ref.`}),apply:y({long:`apply`,description:`Replace the local upgrade skill with the target version when it differs.`,defaultValue:()=>!1})},handler:({apply:e,target:t})=>{process.exitCode=p({apply:e,target:t})}}),"fast-forward-template-files":v({name:`fast-forward-template-files`,args:{target:S({long:`target`,type:D,description:`Target Coreframe template git ref.`}),base:S({long:`base`,type:C(D),description:`Previous Coreframe template git ref. Defaults to package.json engines.coreframe.`}),apply:y({long:`apply`,description:`Write clean fast-forwards to the worktree.`,defaultValue:()=>!1})},handler:({apply:e,base:t,target:n})=>h({apply:e,base:t,target:n})})}}),db:O({name:`db`,cmds:{ensure:v({name:`ensure`,args:{},handler:a}),generate:v({name:`generate`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit generate.`})},handler:({args:t})=>e(`generate`,t)}),migrate:v({name:`migrate`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit migrate.`})},handler:({args:t})=>e(`migrate`,t)}),"migrate-held":v({name:`migrate-held`,args:{confirm:S({long:`confirm`,type:C(x([`run-held-migrations`])),description:`Required confirmation value for held migrations.`})},handler:({confirm:e})=>o({argv:e?[`--confirm=${e}`]:[]})}),"migrate-local":v({name:`migrate-local`,args:{},handler:n}),"migrations-check":v({name:`migrations-check`,args:{},handler:u}),reset:v({name:`reset`,args:{},handler:r}),seed:v({name:`seed`,args:{},handler:()=>t()}),"schema-check":v({name:`schema-check`,args:{},handler:()=>s()}),setup:v({name:`setup`,args:{},handler:()=>i()}),studio:v({name:`studio`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit studio.`})},handler:({args:t})=>e(`studio`,t)})}})}});import.meta.main&&E(_(k),process.argv);export{k as coreframeCli};
2
+ import{runDrizzleKitCommand as e}from"./db/drizzle-kit.js";import{seedLocalDb as t}from"./db/seed.js";import{migrateLocalDb as n}from"./db/migrate.js";import{resetLocalDb as r}from"./db/reset.js";import{setupLocalDb as i}from"./db/setup.js";import{ensureLocalDb as a}from"./db/ensure.js";import{migrateHeldMigrations as o}from"./db/migrate-held.js";import{checkSchemaPush as s}from"./db/schema-check.js";import{tauriReleasePlatforms as c}from"./deploy/config.js";import{deployProject as l}from"./deploy.js";import{checkDeployMigrations as u}from"./deploy/check-migrations.js";import{runDevServer as d}from"./dev.js";import{typecheckProject as f}from"./typecheck.js";import{checkUpgradeSkillCurrent as p}from"./upgrade/check-skill-current.js";import{ensureTemplateRemote as m}from"./upgrade/ensure-template-remote.js";import{fastForwardTemplateFiles as h}from"./upgrade/fast-forward-template-files.js";import{array as g,binary as _,command as v,flag as y,multioption as b,oneOf as x,option as S,optional as C,positional as w,rest as T,run as E,string as D,subcommands as O}from"cmd-ts";const k=O({name:`coreframe`,cmds:{deploy:v({name:`deploy`,args:{runMigrations:y({long:`run-migrations`,description:`Run pending deploy-safe database migrations before deploying.`,defaultValue:()=>!1}),skipMigrations:y({long:`skip-migrations`,description:`Deploy without running pending deploy-safe database migrations.`,defaultValue:()=>!1}),skipPostDeployChecks:y({long:`skip-post-deploy-checks`,description:`Skip post-deploy checks after Cloudflare deployment.`,defaultValue:()=>!1}),tauriLocalPlatforms:b({long:`tauri-local-platform`,type:g(x(c)),description:`Build one Tauri release platform locally. Repeat for multiple platforms.`,defaultValue:()=>[]}),tauriWorkflowName:S({long:`tauri-workflow-name`,type:C(D),description:`GitHub Actions workflow file or name for remote Tauri release builds.`}),tauriWorkflowPlatforms:b({long:`tauri-workflow-platform`,type:g(x(c)),description:`Build one Tauri release platform with GitHub Actions. Repeat for multiple platforms.`,defaultValue:()=>[]}),tauriWorkflowRef:S({long:`tauri-workflow-ref`,type:C(D),description:`Git ref used when dispatching remote Tauri release builds.`}),yes:y({long:`yes`,short:`y`,description:`Approve noninteractive deploy prompts.`,defaultValue:()=>!1})},handler:({runMigrations:e,skipMigrations:t,skipPostDeployChecks:n,tauriLocalPlatforms:r,tauriWorkflowName:i,tauriWorkflowPlatforms:a,tauriWorkflowRef:o,yes:s})=>l([...e?[`--run-migrations`]:[],...t?[`--skip-migrations`]:[],...n?[`--skip-post-deploy-checks`]:[],...r.flatMap(e=>[`--tauri-local-platform`,e]),...i?[`--tauri-workflow-name`,i]:[],...a.flatMap(e=>[`--tauri-workflow-platform`,e]),...o?[`--tauri-workflow-ref`,o]:[],...s?[`--yes`]:[]])}),typecheck:v({name:`typecheck`,args:{},handler:f}),dev:v({name:`dev`,args:{platform:w({type:C(x([`web`,`desktop`,`ios`,`android`])),displayName:`platform`,description:`Development target platform. Defaults to web.`})},handler:({platform:e})=>d({platform:e??`web`})}),upgrade:O({name:`upgrade`,cmds:{"ensure-template-remote":v({name:`ensure-template-remote`,args:{remote:S({long:`remote`,type:D,defaultValue:()=>`template`,description:`Remote name to ensure.`}),noFetch:y({long:`no-fetch`,description:`Do not fetch the remote after ensuring it exists.`,defaultValue:()=>!1})},handler:({noFetch:e,remote:t})=>m({fetch:!e,remote:t})}),"check-skill-current":v({name:`check-skill-current`,args:{target:S({long:`target`,type:D,description:`Target Coreframe template git ref.`}),apply:y({long:`apply`,description:`Replace the local upgrade skill with the target version when it differs.`,defaultValue:()=>!1})},handler:({apply:e,target:t})=>{process.exitCode=p({apply:e,target:t})}}),"fast-forward-template-files":v({name:`fast-forward-template-files`,args:{target:S({long:`target`,type:D,description:`Target Coreframe template git ref.`}),base:S({long:`base`,type:C(D),description:`Previous Coreframe template git ref. Defaults to package.json engines.coreframe.`}),apply:y({long:`apply`,description:`Write clean fast-forwards to the worktree.`,defaultValue:()=>!1})},handler:({apply:e,base:t,target:n})=>h({apply:e,base:t,target:n})})}}),db:O({name:`db`,cmds:{ensure:v({name:`ensure`,args:{},handler:a}),generate:v({name:`generate`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit generate.`})},handler:({args:t})=>e(`generate`,t)}),migrate:v({name:`migrate`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit migrate.`})},handler:({args:t})=>e(`migrate`,t)}),"migrate-held":v({name:`migrate-held`,args:{confirm:S({long:`confirm`,type:C(x([`run-held-migrations`])),description:`Required confirmation value for held migrations.`})},handler:({confirm:e})=>o({argv:e?[`--confirm=${e}`]:[]})}),"migrate-local":v({name:`migrate-local`,args:{},handler:n}),"migrations-check":v({name:`migrations-check`,args:{},handler:u}),reset:v({name:`reset`,args:{},handler:r}),seed:v({name:`seed`,args:{},handler:()=>t()}),"schema-check":v({name:`schema-check`,args:{seed:y({long:`seed`,description:`Run the configured project seed against the throwaway database.`,defaultValue:()=>!1})},handler:({seed:e})=>s({seed:e})}),setup:v({name:`setup`,args:{},handler:()=>i()}),studio:v({name:`studio`,args:{args:T({displayName:`drizzle-kit args`,description:`Additional arguments passed to drizzle-kit studio.`})},handler:({args:t})=>e(`studio`,t)})}})}});import.meta.main&&E(_(k),process.argv);export{k as coreframeCli};
@@ -0,0 +1,8 @@
1
+ //#region db/apply-seed.d.ts
2
+ type SeedQuery = object;
3
+ type SeedDatabase = {
4
+ transaction<T>(transaction: (tx: any) => Promise<T>): Promise<T>;
5
+ };
6
+ declare function applySeed(db: SeedDatabase, seed: readonly SeedQuery[]): Promise<void>;
7
+ //#endregion
8
+ export { SeedDatabase, SeedQuery, applySeed };
@@ -0,0 +1 @@
1
+ async function e(e,t){t.length!==0&&await e.transaction(async e=>{let n=e;for(let e of t)await n.execute(e.getSQL())})}export{e as applySeed};
@@ -1,6 +1,7 @@
1
1
  import { importProjectModule } from "../project.js";
2
2
  import { createLocalPostgresDb, startTemporaryProjectPostgres } from "./local-postgres.js";
3
3
  import { planLocalSchemaPush } from "./schema-push.js";
4
+ import { runProjectSeed } from "./seed.js";
4
5
 
5
6
  //#region db/schema-check.d.ts
6
7
  type CheckSchemaPushOptions = {
@@ -8,6 +9,8 @@ type CheckSchemaPushOptions = {
8
9
  env?: NodeJS.ProcessEnv;
9
10
  importProjectModule?: typeof importProjectModule;
10
11
  planLocalSchemaPush?: typeof planLocalSchemaPush;
12
+ seed?: boolean;
13
+ runProjectSeed?: typeof runProjectSeed;
11
14
  startTemporaryProjectPostgres?: typeof startTemporaryProjectPostgres;
12
15
  };
13
16
  declare function checkSchemaPush({
@@ -15,6 +18,8 @@ declare function checkSchemaPush({
15
18
  env,
16
19
  importProjectModule,
17
20
  planLocalSchemaPush,
21
+ seed,
22
+ runProjectSeed,
18
23
  startTemporaryProjectPostgres
19
24
  }?: CheckSchemaPushOptions): Promise<void>;
20
25
  //#endregion
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{importProjectModule as e}from"../project.js";import{createLocalPostgresDb as t,startTemporaryProjectPostgres as n}from"./local-postgres.js";import r from"../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import{inferSchemaDialect as i,planLocalSchemaPush as a}from"./schema-push.js";const o={createLocalPostgresDb:t,importProjectModule:e,planLocalSchemaPush:a,startTemporaryProjectPostgres:n};async function s({createLocalPostgresDb:e=o.createLocalPostgresDb,env:t=process.env,importProjectModule:n=o.importProjectModule,planLocalSchemaPush:a=o.planLocalSchemaPush,startTemporaryProjectPostgres:s=o.startTemporaryProjectPostgres}={}){try{var l=r();console.log(`Checking Drizzle schema against a throwaway PostgreSQL database`);let o=l.a(await s({env:t})),u=await n(`src/db/schema.ts`),d=await e({env:o.env});try{let e=i(u);if(e!==`postgres`)throw Error(`Temporary schema push checks require PostgreSQL schema, but found ${e}.`);let t=await a(e,u,d);if(t.sqlStatements.length===0){console.log(`Drizzle schema check passed with no changes`);return}console.log(`Applying ${t.sqlStatements.length} statement(s) to throwaway database`),await t.apply(),console.log(`Drizzle schema check passed`)}finally{await c(d)}}catch(e){l.e=e}finally{await l.d()}}function c(e){return e.$client.end()}import.meta.main&&s().catch(e=>{console.error(e),process.exit(1)});export{s as checkSchemaPush};
2
+ import{importProjectModule as e}from"../project.js";import{createLocalPostgresDb as t,startTemporaryProjectPostgres as n}from"./local-postgres.js";import r from"../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import{inferSchemaDialect as i,planLocalSchemaPush as a}from"./schema-push.js";import{runProjectSeed as o}from"./seed.js";const s={createLocalPostgresDb:t,importProjectModule:e,planLocalSchemaPush:a,runProjectSeed:o,startTemporaryProjectPostgres:n};async function c({createLocalPostgresDb:e=s.createLocalPostgresDb,env:t=process.env,importProjectModule:n=s.importProjectModule,planLocalSchemaPush:a=s.planLocalSchemaPush,seed:o=!1,runProjectSeed:c=s.runProjectSeed,startTemporaryProjectPostgres:u=s.startTemporaryProjectPostgres}={}){try{var d=r();console.log(`Checking Drizzle schema against a throwaway PostgreSQL database`);let s=d.a(await u({env:t})),f=await n(`src/db/schema.ts`),p=await e({env:s.env});try{let e=i(f);if(e!==`postgres`)throw Error(`Temporary schema push checks require PostgreSQL schema, but found ${e}.`);let t=await a(e,f,p);t.sqlStatements.length===0?console.log(`Drizzle schema check passed with no changes`):(console.log(`Applying ${t.sqlStatements.length} statement(s) to throwaway database`),await t.apply(),console.log(`Drizzle schema check passed`)),o&&(console.log(`Seeding throwaway database`),await c(`default`,{env:s.env}),console.log(`Throwaway database seed check passed`))}finally{await l(p)}}catch(e){d.e=e}finally{await d.d()}}function l(e){return e.$client.end()}import.meta.main&&c().catch(e=>{console.error(e),process.exit(1)});export{c as checkSchemaPush};
package/dist/db/seed.d.ts CHANGED
@@ -1,14 +1,32 @@
1
+ import { readProjectConfig } from "../config.js";
1
2
  import { SeedProfile } from "./config.js";
3
+ import { importProjectModule } from "../project.js";
2
4
  import { startProjectPostgres } from "./local-postgres.js";
3
5
 
4
6
  //#region db/seed.d.ts
5
7
  type SeedLocalDbOptions = {
6
8
  env?: NodeJS.ProcessEnv;
9
+ importProjectModule?: typeof importProjectModule;
10
+ readProjectConfig?: typeof readProjectConfig;
7
11
  startProjectPostgres?: typeof startProjectPostgres;
8
12
  };
13
+ type RunProjectSeedOptions = {
14
+ env: NodeJS.ProcessEnv;
15
+ importProjectModule?: typeof importProjectModule;
16
+ readProjectConfig?: typeof readProjectConfig;
17
+ seedEntryPoint?: string;
18
+ };
9
19
  declare function seedLocalDb(profile?: SeedProfile, {
10
20
  env,
21
+ importProjectModule,
22
+ readProjectConfig,
11
23
  startProjectPostgres
12
24
  }?: SeedLocalDbOptions): Promise<void>;
25
+ declare function runProjectSeed(profile: SeedProfile | undefined, {
26
+ env,
27
+ importProjectModule,
28
+ readProjectConfig,
29
+ seedEntryPoint
30
+ }: RunProjectSeedOptions): Promise<void>;
13
31
  //#endregion
14
- export { seedLocalDb };
32
+ export { runProjectSeed, seedLocalDb };
package/dist/db/seed.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{importProjectModule as e}from"../project.js";import{createLocalPostgresDb as t,startProjectPostgres as n}from"./local-postgres.js";import r from"../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import{getSeedProfile as i}from"./config.js";const a={startProjectPostgres:n};async function o(n=i(),{env:o=process.env,startProjectPostgres:s=a.startProjectPostgres}={}){try{var c=r();let i=c.a(await s({env:o})),[{seedUsers:a},l]=await Promise.all([e(`scripts/db/seeds/users.ts`),t({env:i.env})]);try{await a(l,n),console.log(`Seeded local database with "${n}" profile`)}finally{await l.$client.end()}}catch(e){c.e=e}finally{await c.d()}}import.meta.main&&o().catch(e=>{console.error(e),process.exit(1)});export{o as seedLocalDb};
2
+ import{readProjectConfig as e}from"../config.js";import{importProjectModule as t}from"../project.js";import{startProjectPostgres as n}from"./local-postgres.js";import r from"../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import{getSeedProfile as i}from"./config.js";const a={importProjectModule:t,readProjectConfig:e,startProjectPostgres:n};async function o(e=i(),{env:t=process.env,importProjectModule:n=a.importProjectModule,readProjectConfig:o=a.readProjectConfig,startProjectPostgres:l=a.startProjectPostgres}={}){try{var u=r();let i=await o(),a=c(i);await s(e,{env:u.a(await l({config:i,env:t})).env,importProjectModule:n,readProjectConfig:o,seedEntryPoint:a}),console.log(`Seeded local database with "${e}" profile`)}catch(e){u.e=e}finally{await u.d()}}async function s(e=i(),{env:t,importProjectModule:n=a.importProjectModule,readProjectConfig:r=a.readProjectConfig,seedEntryPoint:o}){o??=c(await r()),await u(t,async()=>{await l(await n(o),o)({env:t,profile:e})})}function c(e){let t=e.database?.seed;if(!t)throw Error(`coreframe.config.ts must configure database.seed before running db seed.`);return t}function l(e,t){let n=e.default??e.seed??e.seedLocalDb;if(!n)throw Error(`${t} must export a default seed function, seed function, or seedLocalDb function.`);return n}async function u(e,t){let n=new Map;for(let[t,r]of Object.entries(e))n.set(t,process.env[t]),r===void 0?delete process.env[t]:process.env[t]=r;try{await t()}finally{for(let[e,t]of n)t===void 0?delete process.env[e]:process.env[e]=t}}import.meta.main&&o().catch(e=>{console.error(e),process.exit(1)});export{s as runProjectSeed,o as seedLocalDb};
package/dist/dev.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{readProjectConfig as e}from"./config.js";import{startProjectPostgres as t}from"./db/local-postgres.js";import n from"./_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import r from"node:path";import i from"node:process";import{supervise as a}from"procband";const o=r.resolve(`node_modules`,`.bin`),s=i.platform===`win32`?`pnpm.cmd`:`pnpm`,c=i.platform===`win32`?`react-router.cmd`:`react-router`,l=i.platform===`win32`?`turso.cmd`:`turso`,u={readProjectConfig:e,startProjectPostgres:t};async function d({cwd:e=i.cwd(),env:t=i.env,platform:d=`web`,readProjectConfig:_=u.readProjectConfig,startProjectPostgres:v=u.startProjectPostgres}={}){let y=t.PATH??t.Path??``,b,x;try{if(d===`web`){let i=await _({cwd:e});if(i.database?.dialect===`sqlite`){let n={command:l,args:[`dev`],cwd:e,env:t};b=a({name:g(n),...n}),x=b.wait().then(e=>h(n,e)),x.catch(()=>void 0);let r={command:s,args:[`db`,`ensure`],cwd:e,env:t};await a({name:g(r),...r}).wait().then(e=>h(r,e))}if(f(i))try{var S=n();let l=S.a(await v({config:i,cwd:e,env:t})).env,u={command:s,args:[`db`,`ensure`],cwd:e,env:l};await a({name:g(u),...u}).wait().then(e=>h(u,e));let d={command:c,args:[`dev`],cwd:e,env:{...l,CLOUDFLARE_ENV:`development`,PATH:o+r.delimiter+y}};await a({name:g(d),...d}).wait().then(e=>h(d,e));return}catch(e){S.e=e}finally{await S.d()}let u={command:c,args:[`dev`],cwd:e,env:{...t,CLOUDFLARE_ENV:`development`,PATH:o+r.delimiter+y}};await p(a({name:g(u),...u}).wait().then(e=>h(u,e)),x);return}let i=m(d),u={command:s,args:i,cwd:e,env:t};await a({name:g(u),...u}).wait().then(e=>h(u,e))}finally{if(b){b.kill(`SIGTERM`);try{await x}catch{}}}}function f(e){return(e.database?.dialect??`postgres`)===`postgres`}async function p(e,t){if(!t){await e;return}await Promise.race([e,t.then(()=>{throw Error(`turso dev exited before the web dev server stopped`)},e=>{throw e})])}function m(e){return[`--dir=tauri`,`tauri`,...e===`desktop`?[]:[e],`dev`]}function h(e,t){if(t.exitCode===0)return;let n=[e.command,...e.args??[]].join(` `);throw Error(`${n} failed${t.signal?` with signal ${t.signal}`:` with exit code ${t.code??t.exitCode}`}`)}function g({command:e,args:t=[]}){return[r.basename(e).replace(/\.[cm]?js$/,``),...t].filter(e=>/^[\w-]+$/.test(e)).join(`-`)}import.meta.main&&d().catch(e=>{console.error(e),i.exit(1)});export{d as runDevServer};
2
+ import{readProjectConfig as e}from"./config.js";import{startProjectPostgres as t}from"./db/local-postgres.js";import n from"./_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/usingCtx.js";import r from"node:path";import i from"node:process";import{supervise as a}from"procband";const o=r.resolve(`node_modules`,`.bin`),s=i.platform===`win32`?`pnpm.cmd`:`pnpm`,c=i.platform===`win32`?`react-router.cmd`:`react-router`,l=i.platform===`win32`?`turso.cmd`:`turso`,u={readProjectConfig:e,startProjectPostgres:t};async function d({cwd:e=i.cwd(),env:t=i.env,platform:d=`web`,readProjectConfig:m=u.readProjectConfig,startProjectPostgres:h=u.startProjectPostgres}={}){let g=t.PATH??t.Path??``,_;try{if(d===`web`){let i=await m({cwd:e});if(i.database?.dialect===`sqlite`&&(_=a({name:`turso-dev`,command:l,args:[`dev`],cwd:e,env:t}),await _.waitFor(`listening`),await a({name:`db-ensure`,command:s,args:[`db`,`ensure`],cwd:e,env:t,prefix:!1}).expectSuccess()),f(i))try{var v=n();let l=v.a(await h({config:i,cwd:e,env:t})).env;await a({name:`db-ensure`,command:s,args:[`db`,`ensure`],cwd:e,env:l,prefix:!1}).expectSuccess(),await a({name:`web-dev`,command:c,args:[`dev`],cwd:e,env:{...l,CLOUDFLARE_ENV:`development`,PATH:o+r.delimiter+g}}).expectSuccess();return}catch(e){v.e=e}finally{await v.d()}await a({name:`web-dev`,command:c,args:[`dev`],cwd:e,env:{...t,CLOUDFLARE_ENV:`development`,PATH:o+r.delimiter+g}}).expectSuccess();return}let i=p(d);await a({name:[`tauri`,...i.slice(2)].join(`-`),command:s,args:i,cwd:e,env:t}).expectSuccess()}finally{_&&_.kill(`SIGTERM`)}}function f(e){return(e.database?.dialect??`postgres`)===`postgres`}function p(e){return[`--dir=tauri`,`tauri`,...e===`desktop`?[]:[e],`dev`]}import.meta.main&&d({env:{...i.env,FORCE_COLOR:`1`}}).catch(e=>{console.error(e),i.exit(1)});export{d as runDevServer};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coreframe/scripts",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "bin": {
5
5
  "coreframe": "./bin/coreframe.js"
6
6
  },
@@ -33,7 +33,7 @@
33
33
  "drizzle-orm": "1.0.0-rc.4",
34
34
  "local-postgres": "0.1.2",
35
35
  "nano-spawn": "^2.1.0",
36
- "procband": "^0.3.5",
36
+ "procband": "^0.3.6",
37
37
  "tinyglobby": "^0.2.17"
38
38
  },
39
39
  "devDependencies": {