@donkeylabs/cli 2.0.14 → 2.0.16
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 +1 -1
- package/src/commands/config.ts +610 -0
- package/src/commands/deploy-enhanced.ts +354 -0
- package/src/commands/deploy.ts +204 -0
- package/src/commands/generate.ts +11 -13
- package/src/commands/init-enhanced.ts +1994 -0
- package/src/deployment/manager.ts +356 -0
- package/src/index.ts +47 -19
- package/templates/starter/.env.example +0 -44
- package/templates/starter/.gitignore.template +0 -4
- package/templates/starter/donkeylabs.config.ts +0 -6
- package/templates/starter/package.json +0 -21
- package/templates/starter/src/index.ts +0 -54
- package/templates/starter/src/plugins/stats/index.ts +0 -105
- package/templates/starter/src/routes/health/handlers/ping.ts +0 -22
- package/templates/starter/src/routes/health/index.ts +0 -19
- package/templates/starter/tsconfig.json +0 -27
- package/templates/sveltekit-app/.env.example +0 -59
- package/templates/sveltekit-app/README.md +0 -103
- package/templates/sveltekit-app/bun.lock +0 -683
- package/templates/sveltekit-app/donkeylabs.config.ts +0 -12
- package/templates/sveltekit-app/package.json +0 -38
- package/templates/sveltekit-app/src/app.css +0 -40
- package/templates/sveltekit-app/src/app.html +0 -12
- package/templates/sveltekit-app/src/hooks.server.ts +0 -4
- package/templates/sveltekit-app/src/lib/components/ui/badge/badge.svelte +0 -30
- package/templates/sveltekit-app/src/lib/components/ui/badge/index.ts +0 -3
- package/templates/sveltekit-app/src/lib/components/ui/button/button.svelte +0 -48
- package/templates/sveltekit-app/src/lib/components/ui/button/index.ts +0 -9
- package/templates/sveltekit-app/src/lib/components/ui/card/card-content.svelte +0 -18
- package/templates/sveltekit-app/src/lib/components/ui/card/card-description.svelte +0 -18
- package/templates/sveltekit-app/src/lib/components/ui/card/card-footer.svelte +0 -18
- package/templates/sveltekit-app/src/lib/components/ui/card/card-header.svelte +0 -18
- package/templates/sveltekit-app/src/lib/components/ui/card/card-title.svelte +0 -18
- package/templates/sveltekit-app/src/lib/components/ui/card/card.svelte +0 -21
- package/templates/sveltekit-app/src/lib/components/ui/card/index.ts +0 -21
- package/templates/sveltekit-app/src/lib/components/ui/index.ts +0 -4
- package/templates/sveltekit-app/src/lib/components/ui/input/index.ts +0 -2
- package/templates/sveltekit-app/src/lib/components/ui/input/input.svelte +0 -20
- package/templates/sveltekit-app/src/lib/permissions.ts +0 -213
- package/templates/sveltekit-app/src/lib/utils/index.ts +0 -6
- package/templates/sveltekit-app/src/routes/+layout.svelte +0 -8
- package/templates/sveltekit-app/src/routes/+page.server.ts +0 -25
- package/templates/sveltekit-app/src/routes/+page.svelte +0 -680
- package/templates/sveltekit-app/src/routes/workflows/+page.server.ts +0 -23
- package/templates/sveltekit-app/src/routes/workflows/+page.svelte +0 -522
- package/templates/sveltekit-app/src/server/events.ts +0 -28
- package/templates/sveltekit-app/src/server/index.ts +0 -124
- package/templates/sveltekit-app/src/server/plugins/auth/auth.test.ts +0 -377
- package/templates/sveltekit-app/src/server/plugins/auth/index.ts +0 -815
- package/templates/sveltekit-app/src/server/plugins/auth/migrations/001_create_users.ts +0 -25
- package/templates/sveltekit-app/src/server/plugins/auth/migrations/002_create_sessions.ts +0 -32
- package/templates/sveltekit-app/src/server/plugins/auth/migrations/003_create_refresh_tokens.ts +0 -33
- package/templates/sveltekit-app/src/server/plugins/auth/migrations/004_create_passkeys.ts +0 -60
- package/templates/sveltekit-app/src/server/plugins/auth/schema.ts +0 -65
- package/templates/sveltekit-app/src/server/plugins/demo/index.ts +0 -262
- package/templates/sveltekit-app/src/server/plugins/email/email.test.ts +0 -369
- package/templates/sveltekit-app/src/server/plugins/email/index.ts +0 -411
- package/templates/sveltekit-app/src/server/plugins/email/migrations/001_create_email_tokens.ts +0 -33
- package/templates/sveltekit-app/src/server/plugins/email/schema.ts +0 -24
- package/templates/sveltekit-app/src/server/plugins/permissions/index.ts +0 -1048
- package/templates/sveltekit-app/src/server/plugins/permissions/migrations/001_create_tenants.ts +0 -63
- package/templates/sveltekit-app/src/server/plugins/permissions/migrations/002_create_roles.ts +0 -90
- package/templates/sveltekit-app/src/server/plugins/permissions/migrations/003_create_resource_grants.ts +0 -50
- package/templates/sveltekit-app/src/server/plugins/permissions/permissions.test.ts +0 -566
- package/templates/sveltekit-app/src/server/plugins/permissions/schema.ts +0 -67
- package/templates/sveltekit-app/src/server/plugins/workflow-demo/index.ts +0 -198
- package/templates/sveltekit-app/src/server/routes/auth/auth.schemas.ts +0 -66
- package/templates/sveltekit-app/src/server/routes/auth/handlers/login.handler.ts +0 -18
- package/templates/sveltekit-app/src/server/routes/auth/handlers/logout.handler.ts +0 -16
- package/templates/sveltekit-app/src/server/routes/auth/handlers/me.handler.ts +0 -20
- package/templates/sveltekit-app/src/server/routes/auth/handlers/refresh.handler.ts +0 -17
- package/templates/sveltekit-app/src/server/routes/auth/handlers/register.handler.ts +0 -19
- package/templates/sveltekit-app/src/server/routes/auth/handlers/update-profile.handler.ts +0 -21
- package/templates/sveltekit-app/src/server/routes/auth/index.ts +0 -73
- package/templates/sveltekit-app/src/server/routes/demo.ts +0 -464
- package/templates/sveltekit-app/src/server/routes/example/example.schemas.ts +0 -22
- package/templates/sveltekit-app/src/server/routes/example/handlers/greet.handler.ts +0 -21
- package/templates/sveltekit-app/src/server/routes/example/index.ts +0 -28
- package/templates/sveltekit-app/src/server/routes/permissions/index.ts +0 -248
- package/templates/sveltekit-app/src/server/routes/tenants/index.ts +0 -339
- package/templates/sveltekit-app/static/robots.txt +0 -3
- package/templates/sveltekit-app/svelte.config.ts +0 -17
- package/templates/sveltekit-app/tsconfig.json +0 -20
- package/templates/sveltekit-app/vite.config.ts +0 -12
package/templates/sveltekit-app/src/server/plugins/permissions/migrations/001_create_tenants.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { Kysely } from "kysely";
|
|
2
|
-
|
|
3
|
-
export async function up(db: Kysely<any>): Promise<void> {
|
|
4
|
-
// Tenants table
|
|
5
|
-
await db.schema
|
|
6
|
-
.createTable("tenants")
|
|
7
|
-
.ifNotExists()
|
|
8
|
-
.addColumn("id", "text", (col) => col.primaryKey())
|
|
9
|
-
.addColumn("name", "text", (col) => col.notNull())
|
|
10
|
-
.addColumn("slug", "text", (col) => col.notNull().unique())
|
|
11
|
-
.addColumn("settings", "text") // JSON
|
|
12
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo("CURRENT_TIMESTAMP"))
|
|
13
|
-
.addColumn("updated_at", "text", (col) => col.notNull())
|
|
14
|
-
.execute();
|
|
15
|
-
|
|
16
|
-
await db.schema
|
|
17
|
-
.createIndex("idx_tenants_slug")
|
|
18
|
-
.ifNotExists()
|
|
19
|
-
.on("tenants")
|
|
20
|
-
.column("slug")
|
|
21
|
-
.execute();
|
|
22
|
-
|
|
23
|
-
// Tenant members table
|
|
24
|
-
await db.schema
|
|
25
|
-
.createTable("tenant_members")
|
|
26
|
-
.ifNotExists()
|
|
27
|
-
.addColumn("id", "text", (col) => col.primaryKey())
|
|
28
|
-
.addColumn("tenant_id", "text", (col) =>
|
|
29
|
-
col.notNull().references("tenants.id").onDelete("cascade")
|
|
30
|
-
)
|
|
31
|
-
.addColumn("user_id", "text", (col) =>
|
|
32
|
-
col.notNull().references("users.id").onDelete("cascade")
|
|
33
|
-
)
|
|
34
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo("CURRENT_TIMESTAMP"))
|
|
35
|
-
.execute();
|
|
36
|
-
|
|
37
|
-
await db.schema
|
|
38
|
-
.createIndex("idx_tenant_members_tenant_id")
|
|
39
|
-
.ifNotExists()
|
|
40
|
-
.on("tenant_members")
|
|
41
|
-
.column("tenant_id")
|
|
42
|
-
.execute();
|
|
43
|
-
|
|
44
|
-
await db.schema
|
|
45
|
-
.createIndex("idx_tenant_members_user_id")
|
|
46
|
-
.ifNotExists()
|
|
47
|
-
.on("tenant_members")
|
|
48
|
-
.column("user_id")
|
|
49
|
-
.execute();
|
|
50
|
-
|
|
51
|
-
await db.schema
|
|
52
|
-
.createIndex("idx_tenant_members_unique")
|
|
53
|
-
.ifNotExists()
|
|
54
|
-
.on("tenant_members")
|
|
55
|
-
.columns(["tenant_id", "user_id"])
|
|
56
|
-
.unique()
|
|
57
|
-
.execute();
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export async function down(db: Kysely<any>): Promise<void> {
|
|
61
|
-
await db.schema.dropTable("tenant_members").ifExists().execute();
|
|
62
|
-
await db.schema.dropTable("tenants").ifExists().execute();
|
|
63
|
-
}
|
package/templates/sveltekit-app/src/server/plugins/permissions/migrations/002_create_roles.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import type { Kysely } from "kysely";
|
|
2
|
-
|
|
3
|
-
export async function up(db: Kysely<any>): Promise<void> {
|
|
4
|
-
// Roles table
|
|
5
|
-
await db.schema
|
|
6
|
-
.createTable("roles")
|
|
7
|
-
.ifNotExists()
|
|
8
|
-
.addColumn("id", "text", (col) => col.primaryKey())
|
|
9
|
-
.addColumn("tenant_id", "text", (col) =>
|
|
10
|
-
col.references("tenants.id").onDelete("cascade")
|
|
11
|
-
) // null = global role
|
|
12
|
-
.addColumn("name", "text", (col) => col.notNull())
|
|
13
|
-
.addColumn("description", "text")
|
|
14
|
-
.addColumn("permissions", "text", (col) => col.notNull().defaultTo("[]")) // JSON array
|
|
15
|
-
.addColumn("inherits_from", "text", (col) =>
|
|
16
|
-
col.references("roles.id").onDelete("set null")
|
|
17
|
-
)
|
|
18
|
-
.addColumn("is_default", "integer", (col) => col.notNull().defaultTo(0))
|
|
19
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo("CURRENT_TIMESTAMP"))
|
|
20
|
-
.addColumn("updated_at", "text", (col) => col.notNull())
|
|
21
|
-
.execute();
|
|
22
|
-
|
|
23
|
-
await db.schema
|
|
24
|
-
.createIndex("idx_roles_tenant_id")
|
|
25
|
-
.ifNotExists()
|
|
26
|
-
.on("roles")
|
|
27
|
-
.column("tenant_id")
|
|
28
|
-
.execute();
|
|
29
|
-
|
|
30
|
-
await db.schema
|
|
31
|
-
.createIndex("idx_roles_name_tenant")
|
|
32
|
-
.ifNotExists()
|
|
33
|
-
.on("roles")
|
|
34
|
-
.columns(["tenant_id", "name"])
|
|
35
|
-
.execute();
|
|
36
|
-
|
|
37
|
-
// User roles table
|
|
38
|
-
await db.schema
|
|
39
|
-
.createTable("user_roles")
|
|
40
|
-
.ifNotExists()
|
|
41
|
-
.addColumn("id", "text", (col) => col.primaryKey())
|
|
42
|
-
.addColumn("user_id", "text", (col) =>
|
|
43
|
-
col.notNull().references("users.id").onDelete("cascade")
|
|
44
|
-
)
|
|
45
|
-
.addColumn("role_id", "text", (col) =>
|
|
46
|
-
col.notNull().references("roles.id").onDelete("cascade")
|
|
47
|
-
)
|
|
48
|
-
.addColumn("tenant_id", "text", (col) =>
|
|
49
|
-
col.notNull().references("tenants.id").onDelete("cascade")
|
|
50
|
-
)
|
|
51
|
-
.addColumn("assigned_by", "text", (col) =>
|
|
52
|
-
col.references("users.id").onDelete("set null")
|
|
53
|
-
)
|
|
54
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo("CURRENT_TIMESTAMP"))
|
|
55
|
-
.execute();
|
|
56
|
-
|
|
57
|
-
await db.schema
|
|
58
|
-
.createIndex("idx_user_roles_user_id")
|
|
59
|
-
.ifNotExists()
|
|
60
|
-
.on("user_roles")
|
|
61
|
-
.column("user_id")
|
|
62
|
-
.execute();
|
|
63
|
-
|
|
64
|
-
await db.schema
|
|
65
|
-
.createIndex("idx_user_roles_role_id")
|
|
66
|
-
.ifNotExists()
|
|
67
|
-
.on("user_roles")
|
|
68
|
-
.column("role_id")
|
|
69
|
-
.execute();
|
|
70
|
-
|
|
71
|
-
await db.schema
|
|
72
|
-
.createIndex("idx_user_roles_tenant_id")
|
|
73
|
-
.ifNotExists()
|
|
74
|
-
.on("user_roles")
|
|
75
|
-
.column("tenant_id")
|
|
76
|
-
.execute();
|
|
77
|
-
|
|
78
|
-
await db.schema
|
|
79
|
-
.createIndex("idx_user_roles_unique")
|
|
80
|
-
.ifNotExists()
|
|
81
|
-
.on("user_roles")
|
|
82
|
-
.columns(["user_id", "role_id", "tenant_id"])
|
|
83
|
-
.unique()
|
|
84
|
-
.execute();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export async function down(db: Kysely<any>): Promise<void> {
|
|
88
|
-
await db.schema.dropTable("user_roles").ifExists().execute();
|
|
89
|
-
await db.schema.dropTable("roles").ifExists().execute();
|
|
90
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { Kysely } from "kysely";
|
|
2
|
-
|
|
3
|
-
export async function up(db: Kysely<any>): Promise<void> {
|
|
4
|
-
await db.schema
|
|
5
|
-
.createTable("resource_grants")
|
|
6
|
-
.ifNotExists()
|
|
7
|
-
.addColumn("id", "text", (col) => col.primaryKey())
|
|
8
|
-
.addColumn("tenant_id", "text", (col) =>
|
|
9
|
-
col.notNull().references("tenants.id").onDelete("cascade")
|
|
10
|
-
)
|
|
11
|
-
.addColumn("resource_type", "text", (col) => col.notNull())
|
|
12
|
-
.addColumn("resource_id", "text", (col) => col.notNull())
|
|
13
|
-
.addColumn("grantee_type", "text", (col) => col.notNull()) // "user" | "role"
|
|
14
|
-
.addColumn("grantee_id", "text", (col) => col.notNull())
|
|
15
|
-
.addColumn("permissions", "text", (col) => col.notNull().defaultTo("[]")) // JSON array
|
|
16
|
-
.addColumn("granted_by", "text", (col) =>
|
|
17
|
-
col.references("users.id").onDelete("set null")
|
|
18
|
-
)
|
|
19
|
-
.addColumn("created_at", "text", (col) => col.notNull().defaultTo("CURRENT_TIMESTAMP"))
|
|
20
|
-
.execute();
|
|
21
|
-
|
|
22
|
-
// Index for looking up grants by resource
|
|
23
|
-
await db.schema
|
|
24
|
-
.createIndex("idx_resource_grants_resource")
|
|
25
|
-
.ifNotExists()
|
|
26
|
-
.on("resource_grants")
|
|
27
|
-
.columns(["tenant_id", "resource_type", "resource_id"])
|
|
28
|
-
.execute();
|
|
29
|
-
|
|
30
|
-
// Index for looking up grants by grantee
|
|
31
|
-
await db.schema
|
|
32
|
-
.createIndex("idx_resource_grants_grantee")
|
|
33
|
-
.ifNotExists()
|
|
34
|
-
.on("resource_grants")
|
|
35
|
-
.columns(["tenant_id", "grantee_type", "grantee_id"])
|
|
36
|
-
.execute();
|
|
37
|
-
|
|
38
|
-
// Unique constraint: one grant per resource+grantee combination
|
|
39
|
-
await db.schema
|
|
40
|
-
.createIndex("idx_resource_grants_unique")
|
|
41
|
-
.ifNotExists()
|
|
42
|
-
.on("resource_grants")
|
|
43
|
-
.columns(["tenant_id", "resource_type", "resource_id", "grantee_type", "grantee_id"])
|
|
44
|
-
.unique()
|
|
45
|
-
.execute();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export async function down(db: Kysely<any>): Promise<void> {
|
|
49
|
-
await db.schema.dropTable("resource_grants").ifExists().execute();
|
|
50
|
-
}
|