create-fullstack-scaffold 0.4.15 → 0.4.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fullstack-scaffold",
3
- "version": "0.4.15",
3
+ "version": "0.4.17",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-fullstack-scaffold": "dist/cli/index.js"
@@ -43,6 +43,8 @@ const adminManifest: ModuleManifest = {
43
43
  ],
44
44
 
45
45
  hasSSE: true,
46
+
47
+ cliModule: { dir: 'admin', registerFunction: 'registerAdminCommands' },
46
48
  }
47
49
 
48
50
  export default adminManifest
@@ -30,6 +30,8 @@ const captchaManifest: ModuleManifest = {
30
30
  appliesTo: 'admin-api',
31
31
  },
32
32
  ],
33
+
34
+ cliModule: { dir: 'captcha', registerFunction: 'registerCaptchaCommands' },
33
35
  }
34
36
 
35
37
  export default captchaManifest
@@ -22,6 +22,8 @@ const chatManifest: ModuleManifest = {
22
22
  clientStores: ['chatWSStore'],
23
23
 
24
24
  hasWebSocket: true,
25
+
26
+ cliModule: { dir: 'chat', registerFunction: 'registerChatCommands' },
25
27
  }
26
28
 
27
29
  export default chatManifest
@@ -41,6 +41,8 @@ const contentManifest: ModuleManifest = {
41
41
  hasSeed: true,
42
42
  seed: { serviceFile: 'content-service', functionName: 'seedContentsIfEmpty' },
43
43
  },
44
+
45
+ cliModule: { dir: 'content', registerFunction: 'registerContentCommands' },
44
46
  }
45
47
 
46
48
  export default contentManifest
@@ -26,6 +26,8 @@ const disputeManifest: ModuleManifest = {
26
26
  hasSeed: true,
27
27
  seed: { serviceFile: 'dispute-service', functionName: 'seedDisputesIfEmpty' },
28
28
  },
29
+
30
+ cliModule: { dir: 'dispute', registerFunction: 'registerDisputeCommands' },
29
31
  }
30
32
 
31
33
  export default disputeManifest
@@ -23,6 +23,8 @@ const fileManifest: ModuleManifest = {
23
23
  sharedSchemas: {
24
24
  path: 'files',
25
25
  },
26
+
27
+ cliModule: { dir: 'file', registerFunction: 'registerFileCommands' },
26
28
  }
27
29
 
28
30
  export default fileManifest
@@ -28,6 +28,8 @@ const merchantManifest: ModuleManifest = {
28
28
  hasSeed: true,
29
29
  seed: { serviceFile: 'merchant-service', functionName: 'seedMerchantsIfEmpty' },
30
30
  },
31
+
32
+ cliModule: { dir: 'merchant', registerFunction: 'registerMerchantCommands' },
31
33
  }
32
34
 
33
35
  export default merchantManifest
@@ -41,6 +41,8 @@ const orderManifest: ModuleManifest = {
41
41
  hasSeed: true,
42
42
  seed: { serviceFile: 'order-service', functionName: 'seedOrdersIfEmpty' },
43
43
  },
44
+
45
+ cliModule: { dir: 'order', registerFunction: 'registerOrderCommands' },
44
46
  }
45
47
 
46
48
  export default orderManifest
@@ -63,6 +63,8 @@ const permissionManifest: ModuleManifest = {
63
63
  appliesTo: 'all-api',
64
64
  },
65
65
  ],
66
+
67
+ cliModule: { dir: 'permission', registerFunction: 'registerPermissionCommands' },
66
68
  }
67
69
 
68
70
  export default permissionManifest
@@ -26,6 +26,8 @@ const tenantManifest: ModuleManifest = {
26
26
  hasSeed: true,
27
27
  seed: { serviceFile: 'tenant-service', functionName: 'seedTenantsIfEmpty' },
28
28
  },
29
+
30
+ cliModule: { dir: 'tenant', registerFunction: 'registerTenantCommands' },
29
31
  }
30
32
 
31
33
  export default tenantManifest
@@ -26,6 +26,8 @@ const ticketManifest: ModuleManifest = {
26
26
  hasSeed: true,
27
27
  seed: { serviceFile: 'ticket-service', functionName: 'seedTicketsIfEmpty' },
28
28
  },
29
+
30
+ cliModule: { dir: 'ticket', registerFunction: 'registerTicketCommands' },
29
31
  }
30
32
 
31
33
  export default ticketManifest
@@ -3,7 +3,7 @@ import { existsSync } from 'fs'
3
3
  import { defineConfig } from 'vite'
4
4
  import devServer from '@hono/vite-dev-server'
5
5
  import { websocketPlugin, dbPlugin } from './vite-plugins'
6
- // Prerender is optional — only needed during production build with puppeteer installed
6
+ // Prerender is optional — only needed during production build with puppeteer + Chrome installed
7
7
  let prerender: typeof import('@prerenderer/rollup-plugin').default | undefined
8
8
  let puppeteerRenderer: typeof import('@prerenderer/renderer-puppeteer').default | undefined
9
9
  try {
@@ -11,8 +11,16 @@ try {
11
11
  prerender = prerenderMod.default
12
12
  const puppeteerMod = await import('@prerenderer/renderer-puppeteer')
13
13
  puppeteerRenderer = puppeteerMod.default
14
+ // Verify Chrome is actually available at runtime
15
+ // @ts-expect-error — puppeteer is an optional dependency, may not be installed
16
+ const { executablePath } = await import('puppeteer')
17
+ const chromePath = executablePath()
18
+ if (!existsSync(chromePath)) {
19
+ prerender = undefined
20
+ puppeteerRenderer = undefined
21
+ }
14
22
  } catch {
15
- // puppeteer not available — prerendering disabled
23
+ // puppeteer/Chrome not available — prerendering disabled
16
24
  }
17
25
 
18
26
  async function getPrerenderRoutes(): Promise<string[]> {