@kevinmarrec/create-app 0.6.4 → 0.6.6

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/index.js CHANGED
@@ -8,7 +8,7 @@ import { x } from "tinyexec";
8
8
  import fs from "node:fs/promises";
9
9
 
10
10
  //#region package.json
11
- var version = "0.6.4";
11
+ var version = "0.6.6";
12
12
 
13
13
  //#endregion
14
14
  //#region src/utils/fs.ts
@@ -36,6 +36,7 @@ async function scaffold(root) {
36
36
  await fs_default.exists(root) ? await fs_default.empty(root) : await fs_default.mkdir(root);
37
37
  await fs_default.cp(join(import.meta.dirname, "../template"), root, { recursive: true });
38
38
  await fs_default.rename(join(root, "gitignore"), join(root, ".gitignore"));
39
+ await fs_default.rename(join(root, "npmrc"), join(root, ".npmrc"));
39
40
  }
40
41
 
41
42
  //#endregion
@@ -72,7 +73,7 @@ Usage: create-app [OPTIONS...] [DIRECTORY]
72
73
  Options:
73
74
  -f, --force Create the project even if the directory is not empty.
74
75
  -h, --help Display this help message.
75
- --version Display the version number of this CLI.
76
+ -v, --version Display the version number of this CLI.
76
77
  `);
77
78
  process.exit(0);
78
79
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@kevinmarrec/create-app",
3
3
  "type": "module",
4
- "version": "0.6.4",
5
- "packageManager": "bun@1.2.22",
4
+ "version": "0.6.6",
5
+ "packageManager": "bun@1.3.1",
6
6
  "description": "CLI that scaffolds an opinionated Bun & Vue fullstack application.",
7
7
  "author": "Kevin Marrec <kevin@marrec.io>",
8
8
  "license": "MIT",
@@ -57,8 +57,8 @@
57
57
  "@types/bun": "^1.3.0",
58
58
  "@vitest/coverage-v8": "^3.2.4",
59
59
  "bumpp": "^10.3.1",
60
- "eslint": "^9.37.0",
61
- "knip": "^5.65.0",
60
+ "eslint": "^9.38.0",
61
+ "knip": "^5.66.0",
62
62
  "stylelint": "^16.25.0",
63
63
  "tsdown": "^0.15.7",
64
64
  "typescript": "^5.9.3",
@@ -12,7 +12,7 @@
12
12
  "@orpc/server": "^1.9.4",
13
13
  "better-auth": "^1.3.27",
14
14
  "drizzle-orm": "^0.44.6",
15
- "pino": "^10.0.0",
15
+ "pino": "^10.1.0",
16
16
  "valibot": "^1.1.0"
17
17
  },
18
18
  "devDependencies": {
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": "6",
3
3
  "dialect": "sqlite",
4
- "id": "28ff26ce-b417-459e-b30f-4ec14ab62876",
4
+ "id": "c1982d78-242a-497b-b4b3-6a4f8a375c7f",
5
5
  "prevId": "00000000-0000-0000-0000-000000000000",
6
6
  "tables": {
7
- "accounts": {
8
- "name": "accounts",
7
+ "users": {
8
+ "name": "users",
9
9
  "columns": {
10
10
  "id": {
11
11
  "name": "id",
@@ -14,71 +14,30 @@
14
14
  "notNull": true,
15
15
  "autoincrement": false
16
16
  },
17
- "user_id": {
18
- "name": "user_id",
19
- "type": "text",
20
- "primaryKey": false,
21
- "notNull": true,
22
- "autoincrement": false
23
- },
24
- "account_id": {
25
- "name": "account_id",
17
+ "name": {
18
+ "name": "name",
26
19
  "type": "text",
27
20
  "primaryKey": false,
28
21
  "notNull": true,
29
22
  "autoincrement": false
30
23
  },
31
- "provider_id": {
32
- "name": "provider_id",
24
+ "email": {
25
+ "name": "email",
33
26
  "type": "text",
34
27
  "primaryKey": false,
35
28
  "notNull": true,
36
29
  "autoincrement": false
37
30
  },
38
- "id_token": {
39
- "name": "id_token",
40
- "type": "text",
41
- "primaryKey": false,
42
- "notNull": false,
43
- "autoincrement": false
44
- },
45
- "access_token": {
46
- "name": "access_token",
47
- "type": "text",
48
- "primaryKey": false,
49
- "notNull": false,
50
- "autoincrement": false
51
- },
52
- "access_token_expires_at": {
53
- "name": "access_token_expires_at",
54
- "type": "integer",
55
- "primaryKey": false,
56
- "notNull": false,
57
- "autoincrement": false
58
- },
59
- "refresh_token": {
60
- "name": "refresh_token",
61
- "type": "text",
62
- "primaryKey": false,
63
- "notNull": false,
64
- "autoincrement": false
65
- },
66
- "refresh_token_expires_at": {
67
- "name": "refresh_token_expires_at",
31
+ "email_verified": {
32
+ "name": "email_verified",
68
33
  "type": "integer",
69
34
  "primaryKey": false,
70
- "notNull": false,
71
- "autoincrement": false
72
- },
73
- "scope": {
74
- "name": "scope",
75
- "type": "text",
76
- "primaryKey": false,
77
- "notNull": false,
78
- "autoincrement": false
35
+ "notNull": true,
36
+ "autoincrement": false,
37
+ "default": false
79
38
  },
80
- "password": {
81
- "name": "password",
39
+ "image": {
40
+ "name": "image",
82
41
  "type": "text",
83
42
  "primaryKey": false,
84
43
  "notNull": false,
@@ -99,22 +58,16 @@
99
58
  "autoincrement": false
100
59
  }
101
60
  },
102
- "indexes": {},
103
- "foreignKeys": {
104
- "accounts_user_id_users_id_fk": {
105
- "name": "accounts_user_id_users_id_fk",
106
- "tableFrom": "accounts",
107
- "tableTo": "users",
108
- "columnsFrom": [
109
- "user_id"
110
- ],
111
- "columnsTo": [
112
- "id"
61
+ "indexes": {
62
+ "users_email_unique": {
63
+ "name": "users_email_unique",
64
+ "columns": [
65
+ "email"
113
66
  ],
114
- "onDelete": "cascade",
115
- "onUpdate": "no action"
67
+ "isUnique": true
116
68
  }
117
69
  },
70
+ "foreignKeys": {},
118
71
  "compositePrimaryKeys": {},
119
72
  "uniqueConstraints": {},
120
73
  "checkConstraints": {}
@@ -207,8 +160,8 @@
207
160
  "uniqueConstraints": {},
208
161
  "checkConstraints": {}
209
162
  },
210
- "users": {
211
- "name": "users",
163
+ "accounts": {
164
+ "name": "accounts",
212
165
  "columns": {
213
166
  "id": {
214
167
  "name": "id",
@@ -217,30 +170,71 @@
217
170
  "notNull": true,
218
171
  "autoincrement": false
219
172
  },
220
- "name": {
221
- "name": "name",
173
+ "user_id": {
174
+ "name": "user_id",
222
175
  "type": "text",
223
176
  "primaryKey": false,
224
177
  "notNull": true,
225
178
  "autoincrement": false
226
179
  },
227
- "email": {
228
- "name": "email",
180
+ "account_id": {
181
+ "name": "account_id",
229
182
  "type": "text",
230
183
  "primaryKey": false,
231
184
  "notNull": true,
232
185
  "autoincrement": false
233
186
  },
234
- "email_verified": {
235
- "name": "email_verified",
236
- "type": "integer",
187
+ "provider_id": {
188
+ "name": "provider_id",
189
+ "type": "text",
237
190
  "primaryKey": false,
238
191
  "notNull": true,
239
- "autoincrement": false,
240
- "default": false
192
+ "autoincrement": false
241
193
  },
242
- "image": {
243
- "name": "image",
194
+ "access_token": {
195
+ "name": "access_token",
196
+ "type": "text",
197
+ "primaryKey": false,
198
+ "notNull": false,
199
+ "autoincrement": false
200
+ },
201
+ "refresh_token": {
202
+ "name": "refresh_token",
203
+ "type": "text",
204
+ "primaryKey": false,
205
+ "notNull": false,
206
+ "autoincrement": false
207
+ },
208
+ "access_token_expires_at": {
209
+ "name": "access_token_expires_at",
210
+ "type": "integer",
211
+ "primaryKey": false,
212
+ "notNull": false,
213
+ "autoincrement": false
214
+ },
215
+ "refresh_token_expires_at": {
216
+ "name": "refresh_token_expires_at",
217
+ "type": "integer",
218
+ "primaryKey": false,
219
+ "notNull": false,
220
+ "autoincrement": false
221
+ },
222
+ "scope": {
223
+ "name": "scope",
224
+ "type": "text",
225
+ "primaryKey": false,
226
+ "notNull": false,
227
+ "autoincrement": false
228
+ },
229
+ "id_token": {
230
+ "name": "id_token",
231
+ "type": "text",
232
+ "primaryKey": false,
233
+ "notNull": false,
234
+ "autoincrement": false
235
+ },
236
+ "password": {
237
+ "name": "password",
244
238
  "type": "text",
245
239
  "primaryKey": false,
246
240
  "notNull": false,
@@ -261,16 +255,22 @@
261
255
  "autoincrement": false
262
256
  }
263
257
  },
264
- "indexes": {
265
- "users_email_unique": {
266
- "name": "users_email_unique",
267
- "columns": [
268
- "email"
258
+ "indexes": {},
259
+ "foreignKeys": {
260
+ "accounts_user_id_users_id_fk": {
261
+ "name": "accounts_user_id_users_id_fk",
262
+ "tableFrom": "accounts",
263
+ "tableTo": "users",
264
+ "columnsFrom": [
265
+ "user_id"
269
266
  ],
270
- "isUnique": true
267
+ "columnsTo": [
268
+ "id"
269
+ ],
270
+ "onDelete": "cascade",
271
+ "onUpdate": "no action"
271
272
  }
272
273
  },
273
- "foreignKeys": {},
274
274
  "compositePrimaryKeys": {},
275
275
  "uniqueConstraints": {},
276
276
  "checkConstraints": {}
@@ -5,8 +5,8 @@
5
5
  {
6
6
  "idx": 0,
7
7
  "version": "6",
8
- "when": 1756502742132,
9
- "tag": "0000_violet_enchantress",
8
+ "when": 1760742831459,
9
+ "tag": "0000_fluffy_salo",
10
10
  "breakpoints": true
11
11
  }
12
12
  ]
@@ -8,12 +8,12 @@ export const accounts = sqliteTable('accounts', t => ({
8
8
  userId: t.text().notNull().references(() => users.id, { onDelete: 'cascade' }),
9
9
  accountId: t.text().notNull(),
10
10
  providerId: t.text().notNull(),
11
- idToken: t.text(),
12
11
  accessToken: t.text(),
13
- accessTokenExpiresAt: t.integer({ mode: 'timestamp' }),
14
12
  refreshToken: t.text(),
13
+ accessTokenExpiresAt: t.integer({ mode: 'timestamp' }),
15
14
  refreshTokenExpiresAt: t.integer({ mode: 'timestamp' }),
16
15
  scope: t.text(),
16
+ idToken: t.text(),
17
17
  password: t.text(),
18
18
  createdAt: t.integer({ mode: 'timestamp' }).notNull().$defaultFn(() => new Date()),
19
19
  updatedAt: t.integer({ mode: 'timestamp' }).notNull().$defaultFn(() => new Date()).$onUpdate(() => new Date()),
@@ -12,8 +12,8 @@
12
12
  "@kevinmarrec/vue-i18n": "^1.1.2",
13
13
  "@orpc/client": "^1.9.4",
14
14
  "@orpc/tanstack-query": "1.9.4",
15
- "@tanstack/query-core": "^5.90.3",
16
- "@tanstack/vue-query": "^5.90.3",
15
+ "@tanstack/query-core": "^5.90.5",
16
+ "@tanstack/vue-query": "^5.90.5",
17
17
  "@unhead/vue": "^2.0.19",
18
18
  "unocss": "^66.5.4",
19
19
  "vue": "^3.5.22"
@@ -26,9 +26,9 @@
26
26
  "@unocss/vite": "^66.5.4",
27
27
  "@vitejs/plugin-vue": "^6.0.1",
28
28
  "beasties": "^0.3.5",
29
- "rollup-plugin-visualizer": "^6.0.4",
29
+ "rollup-plugin-visualizer": "^6.0.5",
30
30
  "vite": "^7.1.10",
31
- "vite-plugin-vue-devtools": "^8.0.2",
31
+ "vite-plugin-vue-devtools": "^8.0.3",
32
32
  "vite-ssg": "^28.2.1",
33
33
  "vite-tsconfig-paths": "^5.1.4"
34
34
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "example",
3
+ "compatibility_date": "2025-10-01",
4
+ "assets": { "directory": "./dist" },
5
+ "routes": [{ "pattern": "example.com", "custom_domain": true }]
6
+ }
@@ -10,6 +10,7 @@
10
10
  .stylelintcache
11
11
  .temp
12
12
  .vite*
13
+ .wrangler
13
14
  coverage
14
15
  dev-dist
15
16
  dist
package/template/npmrc ADDED
@@ -0,0 +1,2 @@
1
+ public-hoist-pattern[]=*eslint*
2
+ public-hoist-pattern[]=*stylelint*
@@ -2,7 +2,7 @@
2
2
  "name": "app",
3
3
  "type": "module",
4
4
  "private": true,
5
- "packageManager": "bun@1.2.22",
5
+ "packageManager": "bun@1.3.1",
6
6
  "engines": {
7
7
  "node": "lts/*"
8
8
  },
@@ -26,8 +26,8 @@
26
26
  "@kevinmarrec/stylelint-config": "^1.2.2",
27
27
  "@kevinmarrec/tsconfig": "^1.1.0",
28
28
  "concurrently": "^9.2.1",
29
- "eslint": "^9.37.0",
30
- "knip": "^5.65.0",
29
+ "eslint": "^9.38.0",
30
+ "knip": "^5.66.0",
31
31
  "stylelint": "^16.25.0",
32
32
  "typescript": "~5.9.3",
33
33
  "vue-tsc": "^3.1.1"
@@ -1,20 +1,14 @@
1
- CREATE TABLE `accounts` (
1
+ CREATE TABLE `users` (
2
2
  `id` text PRIMARY KEY NOT NULL,
3
- `user_id` text NOT NULL,
4
- `account_id` text NOT NULL,
5
- `provider_id` text NOT NULL,
6
- `id_token` text,
7
- `access_token` text,
8
- `access_token_expires_at` integer,
9
- `refresh_token` text,
10
- `refresh_token_expires_at` integer,
11
- `scope` text,
12
- `password` text,
3
+ `name` text NOT NULL,
4
+ `email` text NOT NULL,
5
+ `email_verified` integer DEFAULT false NOT NULL,
6
+ `image` text,
13
7
  `created_at` integer NOT NULL,
14
- `updated_at` integer NOT NULL,
15
- FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
8
+ `updated_at` integer NOT NULL
16
9
  );
17
10
  --> statement-breakpoint
11
+ CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
18
12
  CREATE TABLE `sessions` (
19
13
  `id` text PRIMARY KEY NOT NULL,
20
14
  `user_id` text NOT NULL,
@@ -28,17 +22,23 @@ CREATE TABLE `sessions` (
28
22
  );
29
23
  --> statement-breakpoint
30
24
  CREATE UNIQUE INDEX `sessions_token_unique` ON `sessions` (`token`);--> statement-breakpoint
31
- CREATE TABLE `users` (
25
+ CREATE TABLE `accounts` (
32
26
  `id` text PRIMARY KEY NOT NULL,
33
- `name` text NOT NULL,
34
- `email` text NOT NULL,
35
- `email_verified` integer DEFAULT false NOT NULL,
36
- `image` text,
27
+ `user_id` text NOT NULL,
28
+ `account_id` text NOT NULL,
29
+ `provider_id` text NOT NULL,
30
+ `access_token` text,
31
+ `refresh_token` text,
32
+ `access_token_expires_at` integer,
33
+ `refresh_token_expires_at` integer,
34
+ `scope` text,
35
+ `id_token` text,
36
+ `password` text,
37
37
  `created_at` integer NOT NULL,
38
- `updated_at` integer NOT NULL
38
+ `updated_at` integer NOT NULL,
39
+ FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
39
40
  );
40
41
  --> statement-breakpoint
41
- CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);--> statement-breakpoint
42
42
  CREATE TABLE `verifications` (
43
43
  `id` text PRIMARY KEY NOT NULL,
44
44
  `identifier` text NOT NULL,