create-velox-app 0.7.9 → 0.8.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # create-velox-app
2
2
 
3
+ ## 0.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: add business logic primitives for B2B SaaS apps
8
+
9
+ ## 0.8.0
10
+
11
+ ### Minor Changes
12
+
13
+ - feat(router): new simplified procedure builder
14
+
3
15
  ## 0.7.9
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # create-velox-app
2
2
 
3
- > **Early Access (v0.7.x)**
3
+ > **Early Access (v0.8.x)**
4
4
 
5
5
  Interactive project scaffolder for VeloxTS Framework - creates production-ready applications with batteries included. Learn more at [@veloxts/velox](https://www.npmjs.com/package/@veloxts/velox).
6
6
 
@@ -6,9 +6,8 @@
6
6
  import { VELOXTS_VERSION } from './shared.js';
7
7
  import type { TemplateConfig, TemplateFile, TemplateType } from './types.js';
8
8
  import { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA } from './types.js';
9
- export { VELOXTS_VERSION };
10
9
  export type { DatabaseMetadata, DatabaseType, TemplateConfig, TemplateFile, TemplateMetadata, TemplateType, } from './types.js';
11
- export { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA, };
10
+ export { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA, VELOXTS_VERSION, };
12
11
  /**
13
12
  * Generate all files for a given template
14
13
  */
@@ -10,11 +10,7 @@ import { VELOXTS_VERSION } from './shared.js';
10
10
  import { generateSpaTemplate } from './spa.js';
11
11
  import { generateTrpcTemplate } from './trpc.js';
12
12
  import { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA, } from './types.js';
13
- // ============================================================================
14
- // Re-exports
15
- // ============================================================================
16
- export { VELOXTS_VERSION };
17
- export { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA, };
13
+ export { DATABASE_METADATA, getAvailableDatabases, getAvailableTemplates, isDatabaseAvailable, isValidDatabase, isValidTemplate, TEMPLATE_METADATA, VELOXTS_VERSION, };
18
14
  // ============================================================================
19
15
  // Template Generator
20
16
  // ============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-velox-app",
3
- "version": "0.7.9",
3
+ "version": "0.8.1",
4
4
  "description": "Project scaffolder for VeloxTS framework",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,16 +23,16 @@
23
23
  "CHANGELOG.md"
24
24
  ],
25
25
  "dependencies": {
26
- "@clack/prompts": "1.0.1",
26
+ "@clack/prompts": "1.1.0",
27
27
  "ora": "9.3.0",
28
28
  "picocolors": "1.1.1"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@playwright/test": "1.58.2",
32
- "@types/node": "25.2.3",
33
- "@vitest/coverage-v8": "4.0.18",
32
+ "@types/node": "25.5.0",
33
+ "@vitest/coverage-v8": "4.1.0",
34
34
  "typescript": "5.9.3",
35
- "vitest": "4.0.18"
35
+ "vitest": "4.1.0"
36
36
  },
37
37
  "keywords": [
38
38
  "velox",
@@ -18,23 +18,23 @@
18
18
  "postinstall": "prisma generate"
19
19
  },
20
20
  "dependencies": {
21
- "@prisma/adapter-better-sqlite3": "7.4.0",
22
- "@prisma/client": "7.4.0",
23
- "@prisma/client-runtime-utils": "7.4.0",
21
+ "@prisma/adapter-better-sqlite3": "7.5.0",
22
+ "@prisma/client": "7.5.0",
23
+ "@prisma/client-runtime-utils": "7.5.0",
24
24
  "@veloxts/auth": "__VELOXTS_VERSION__",
25
25
  "@veloxts/core": "__VELOXTS_VERSION__",
26
26
  "@veloxts/velox": "__VELOXTS_VERSION__",
27
27
  "bcrypt": "6.0.0",
28
- "better-sqlite3": "12.6.2",
29
- "dotenv": "17.2.3",
28
+ "better-sqlite3": "12.8.0",
29
+ "dotenv": "17.3.1",
30
30
  "file-uri-to-path": "2.0.0",
31
31
  "zod": "4.3.6"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/bcrypt": "6.0.0",
35
- "@types/node": "25.1.0",
35
+ "@types/node": "25.5.0",
36
36
  "hot-hook": "0.4.0",
37
- "prisma": "7.4.0",
37
+ "prisma": "7.5.0",
38
38
  "tsup": "8.5.1",
39
39
  "tsx": "4.21.0",
40
40
  "typescript": "5.9.3"
@@ -18,20 +18,20 @@
18
18
  "postinstall": "prisma generate"
19
19
  },
20
20
  "dependencies": {
21
- "@prisma/adapter-better-sqlite3": "7.4.0",
22
- "@prisma/client": "7.4.0",
23
- "@prisma/client-runtime-utils": "7.4.0",
21
+ "@prisma/adapter-better-sqlite3": "7.5.0",
22
+ "@prisma/client": "7.5.0",
23
+ "@prisma/client-runtime-utils": "7.5.0",
24
24
  "@veloxts/core": "__VELOXTS_VERSION__",
25
25
  "@veloxts/velox": "__VELOXTS_VERSION__",
26
- "better-sqlite3": "12.6.2",
27
- "dotenv": "17.2.3",
26
+ "better-sqlite3": "12.8.0",
27
+ "dotenv": "17.3.1",
28
28
  "file-uri-to-path": "2.0.0",
29
29
  "zod": "4.3.6"
30
30
  },
31
31
  "devDependencies": {
32
- "@types/node": "25.1.0",
32
+ "@types/node": "25.5.0",
33
33
  "hot-hook": "0.4.0",
34
- "prisma": "7.4.0",
34
+ "prisma": "7.5.0",
35
35
  "tsup": "8.5.1",
36
36
  "tsx": "4.21.0",
37
37
  "typescript": "5.9.3"
@@ -18,21 +18,21 @@
18
18
  "postinstall": "prisma generate"
19
19
  },
20
20
  "dependencies": {
21
- "@prisma/adapter-better-sqlite3": "7.4.0",
22
- "@prisma/client": "7.4.0",
23
- "@prisma/client-runtime-utils": "7.4.0",
24
- "@trpc/server": "11.9.0",
21
+ "@prisma/adapter-better-sqlite3": "7.5.0",
22
+ "@prisma/client": "7.5.0",
23
+ "@prisma/client-runtime-utils": "7.5.0",
24
+ "@trpc/server": "11.12.0",
25
25
  "@veloxts/core": "__VELOXTS_VERSION__",
26
26
  "@veloxts/velox": "__VELOXTS_VERSION__",
27
- "better-sqlite3": "12.6.2",
28
- "dotenv": "17.2.3",
27
+ "better-sqlite3": "12.8.0",
28
+ "dotenv": "17.3.1",
29
29
  "file-uri-to-path": "2.0.0",
30
30
  "zod": "4.3.6"
31
31
  },
32
32
  "devDependencies": {
33
- "@types/node": "25.1.0",
33
+ "@types/node": "25.5.0",
34
34
  "hot-hook": "0.4.0",
35
- "prisma": "7.4.0",
35
+ "prisma": "7.5.0",
36
36
  "tsup": "8.5.1",
37
37
  "tsx": "4.21.0",
38
38
  "typescript": "5.9.3"
@@ -5,11 +5,11 @@
5
5
  * - Public: GET /api/profiles/:id → { id, name }
6
6
  * Uses handler-level projection: resource(data, Schema.public)
7
7
  * - Authenticated: GET /api/profiles/:id/full → { id, name, email }
8
- * Uses procedure-level auto-projection: .expose(Schema.authenticated)
8
+ * Uses .guard(authenticated) + .output(Schema.authenticated)
9
9
  */
10
10
 
11
11
  import {
12
- authenticatedNarrow,
12
+ authenticated,
13
13
  NotFoundError,
14
14
  procedure,
15
15
  procedures,
@@ -37,7 +37,7 @@ export const profileProcedures = procedures('profiles', {
37
37
  // Handler-level projection: resource(data, Schema.public) returns projected data directly
38
38
  getProfile: procedure()
39
39
  .input(z.object({ id: z.string().uuid() }))
40
- .expose(UserProfileSchema.public)
40
+ .output(UserProfileSchema.public)
41
41
  .query(async ({ input, ctx }) => {
42
42
  const user = await ctx.db.user.findUnique({ where: { id: input.id } });
43
43
  if (!user) throw new NotFoundError(`User '${input.id}' not found`);
@@ -45,12 +45,12 @@ export const profileProcedures = procedures('profiles', {
45
45
  }),
46
46
 
47
47
  // Authenticated: GET /api/profiles/:id/full → { id, name, email }
48
- // Procedure-level auto-projection: .expose(Schema.authenticated) auto-projects the return value
48
+ // Uses .guard(authenticated) + .output(Schema.authenticated) for field-level visibility
49
49
  getFullProfile: procedure()
50
50
  .rest({ method: 'GET', path: '/profiles/:id/full' })
51
- .guardNarrow(authenticatedNarrow)
51
+ .guard(authenticated)
52
52
  .input(z.object({ id: z.string().uuid() }))
53
- .expose(UserProfileSchema.authenticated)
53
+ .output(UserProfileSchema.authenticated)
54
54
  .query(async ({ input, ctx }) => {
55
55
  const user = await ctx.db.user.findUnique({ where: { id: input.id } });
56
56
  if (!user) throw new NotFoundError(`User '${input.id}' not found`);