@tailor-platform/create-sdk 2.0.0-next.4 → 2.0.0-next.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/CHANGELOG.md +2 -0
- package/package.json +6 -6
- package/templates/executor/package.json +5 -5
- package/templates/generators/package.json +5 -5
- package/templates/generators/src/seed/data/Order.schema.ts +2 -2
- package/templates/generators/src/seed/data/Product.schema.ts +2 -2
- package/templates/generators/src/seed/data/User.schema.ts +2 -2
- package/templates/hello-world/package.json +4 -4
- package/templates/inventory-management/package.json +4 -4
- package/templates/inventory-management/src/db/inventory.ts +1 -1
- package/templates/inventory-management/src/db/orderItem.ts +11 -7
- package/templates/inventory-management/src/generated/kysely-tailordb.ts +1 -1
- package/templates/inventory-management/src/resolver/registerOrder.ts +3 -1
- package/templates/multi-application/package.json +4 -4
- package/templates/resolver/package.json +5 -5
- package/templates/static-web-site/package.json +4 -4
- package/templates/tailordb/package.json +5 -5
- package/templates/tailordb/src/db/comment.ts +3 -1
- package/templates/tailordb/src/db/task.ts +18 -26
- package/templates/workflow/package.json +6 -6
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/create-sdk",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.5",
|
|
4
4
|
"description": "A CLI tool to quickly create a new Tailor Platform SDK project",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -17,19 +17,19 @@
|
|
|
17
17
|
],
|
|
18
18
|
"type": "module",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@clack/prompts": "1.
|
|
20
|
+
"@clack/prompts": "1.7.0",
|
|
21
21
|
"execa": "9.6.1",
|
|
22
22
|
"picocolors": "1.1.1",
|
|
23
23
|
"pkg-types": "2.3.1",
|
|
24
|
-
"politty": "0.11.
|
|
24
|
+
"politty": "0.11.2",
|
|
25
25
|
"zod": "4.4.3"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@types/node": "24.13.
|
|
28
|
+
"@types/node": "24.13.3",
|
|
29
29
|
"eslint-plugin-zod": "4.7.0",
|
|
30
|
-
"oxlint": "1.
|
|
30
|
+
"oxlint": "1.73.0",
|
|
31
31
|
"oxlint-tsgolint": "0.24.0",
|
|
32
|
-
"tsdown": "0.22.
|
|
32
|
+
"tsdown": "0.22.4",
|
|
33
33
|
"typescript": "6.0.3"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
19
|
-
"@types/node": "24.13.
|
|
20
|
-
"oxfmt": "0.
|
|
21
|
-
"oxlint": "1.
|
|
18
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
19
|
+
"@types/node": "24.13.3",
|
|
20
|
+
"oxfmt": "0.58.0",
|
|
21
|
+
"oxlint": "1.73.0",
|
|
22
22
|
"oxlint-tsgolint": "0.24.0",
|
|
23
23
|
"typescript": "6.0.3",
|
|
24
|
-
"vitest": "4.1.
|
|
24
|
+
"vitest": "4.1.10"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
19
|
-
"@types/node": "24.13.
|
|
20
|
-
"oxfmt": "0.
|
|
21
|
-
"oxlint": "1.
|
|
18
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
19
|
+
"@types/node": "24.13.3",
|
|
20
|
+
"oxfmt": "0.58.0",
|
|
21
|
+
"oxlint": "1.73.0",
|
|
22
22
|
"oxlint-tsgolint": "0.24.0",
|
|
23
23
|
"typescript": "6.0.3",
|
|
24
|
-
"vitest": "4.1.
|
|
24
|
+
"vitest": "4.1.10"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -4,8 +4,8 @@ import { createTailorDBHook, createStandardSchema } from "@tailor-platform/sdk/t
|
|
|
4
4
|
import { order } from "../../db/order";
|
|
5
5
|
|
|
6
6
|
const schemaType = t.object({
|
|
7
|
-
...order.pickFields(["id"
|
|
8
|
-
...order.omitFields(["id"
|
|
7
|
+
...order.pickFields(["id"], { optional: true }),
|
|
8
|
+
...order.omitFields(["id"]),
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
const hook = createTailorDBHook(order);
|
|
@@ -4,8 +4,8 @@ import { createTailorDBHook, createStandardSchema } from "@tailor-platform/sdk/t
|
|
|
4
4
|
import { product } from "../../db/product";
|
|
5
5
|
|
|
6
6
|
const schemaType = t.object({
|
|
7
|
-
...product.pickFields(["id"
|
|
8
|
-
...product.omitFields(["id"
|
|
7
|
+
...product.pickFields(["id"], { optional: true }),
|
|
8
|
+
...product.omitFields(["id"]),
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
const hook = createTailorDBHook(product);
|
|
@@ -4,8 +4,8 @@ import { createTailorDBHook, createStandardSchema } from "@tailor-platform/sdk/t
|
|
|
4
4
|
import { user } from "../../db/user";
|
|
5
5
|
|
|
6
6
|
const schemaType = t.object({
|
|
7
|
-
...user.pickFields(["id"
|
|
8
|
-
...user.omitFields(["id"
|
|
7
|
+
...user.pickFields(["id"], { optional: true }),
|
|
8
|
+
...user.omitFields(["id"]),
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
const hook = createTailorDBHook(user);
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
17
|
-
"@types/node": "24.13.
|
|
18
|
-
"oxfmt": "0.
|
|
19
|
-
"oxlint": "1.
|
|
16
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
17
|
+
"@types/node": "24.13.3",
|
|
18
|
+
"oxfmt": "0.58.0",
|
|
19
|
+
"oxlint": "1.73.0",
|
|
20
20
|
"oxlint-tsgolint": "0.24.0",
|
|
21
21
|
"typescript": "6.0.3"
|
|
22
22
|
}
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
17
|
-
"@types/node": "24.13.
|
|
18
|
-
"oxfmt": "0.
|
|
19
|
-
"oxlint": "1.
|
|
16
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
17
|
+
"@types/node": "24.13.3",
|
|
18
|
+
"oxfmt": "0.58.0",
|
|
19
|
+
"oxlint": "1.73.0",
|
|
20
20
|
"oxlint-tsgolint": "0.24.0",
|
|
21
21
|
"typescript": "6.0.3"
|
|
22
22
|
}
|
|
@@ -11,7 +11,7 @@ export const inventory = db
|
|
|
11
11
|
quantity: db
|
|
12
12
|
.int()
|
|
13
13
|
.description("Quantity of the product in inventory")
|
|
14
|
-
.validate(({ value }) => value
|
|
14
|
+
.validate(({ value }) => (value < 0 ? "Quantity must be non-negative" : undefined)),
|
|
15
15
|
...db.fields.timestamps(),
|
|
16
16
|
})
|
|
17
17
|
.permission(permissionLoggedIn)
|
|
@@ -16,19 +16,23 @@ export const orderItem = db
|
|
|
16
16
|
quantity: db
|
|
17
17
|
.int()
|
|
18
18
|
.description("Quantity of the product")
|
|
19
|
-
.validate(({ value }) => value
|
|
19
|
+
.validate(({ value }) => (value < 0 ? "Quantity must be non-negative" : undefined)),
|
|
20
20
|
unitPrice: db
|
|
21
21
|
.float()
|
|
22
22
|
.description("Unit price of the product")
|
|
23
|
-
.validate(({ value }) => value
|
|
24
|
-
totalPrice: db.float(
|
|
23
|
+
.validate(({ value }) => (value < 0 ? "Unit price must be non-negative" : undefined)),
|
|
24
|
+
totalPrice: db.float().default(0).description("Total price of the order item"),
|
|
25
25
|
...db.fields.timestamps(),
|
|
26
26
|
})
|
|
27
27
|
.hooks({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
28
|
+
create: ({ input }) => ({
|
|
29
|
+
totalPrice: (input?.quantity ?? 0) * (input?.unitPrice ?? 0),
|
|
30
|
+
}),
|
|
31
|
+
update: ({ input, oldRecord }) => ({
|
|
32
|
+
totalPrice:
|
|
33
|
+
(input?.quantity ?? oldRecord?.quantity ?? 0) *
|
|
34
|
+
(input?.unitPrice ?? oldRecord?.unitPrice ?? 0),
|
|
35
|
+
}),
|
|
32
36
|
})
|
|
33
37
|
.permission(permissionLoggedIn)
|
|
34
38
|
.gqlPermission(gqlPermissionLoggedIn);
|
|
@@ -5,7 +5,9 @@ import { type DB, getDB } from "../generated/kysely-tailordb";
|
|
|
5
5
|
|
|
6
6
|
const input = {
|
|
7
7
|
order: t.object(order.omitFields(["id", "createdAt", "updatedAt"])),
|
|
8
|
-
items: t.object(orderItem.omitFields(["id", "createdAt", "updatedAt"]), {
|
|
8
|
+
items: t.object(orderItem.omitFields(["id", "createdAt", "updatedAt", "totalPrice"]), {
|
|
9
|
+
array: true,
|
|
10
|
+
}),
|
|
9
11
|
};
|
|
10
12
|
interface Input {
|
|
11
13
|
order: t.infer<typeof input.order>;
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"typecheck": "tsc --noEmit"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
18
|
-
"@types/node": "24.13.
|
|
19
|
-
"oxfmt": "0.
|
|
20
|
-
"oxlint": "1.
|
|
17
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
18
|
+
"@types/node": "24.13.3",
|
|
19
|
+
"oxfmt": "0.58.0",
|
|
20
|
+
"oxlint": "1.73.0",
|
|
21
21
|
"oxlint-tsgolint": "0.24.0",
|
|
22
22
|
"typescript": "6.0.3"
|
|
23
23
|
}
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
19
|
-
"@types/node": "24.13.
|
|
20
|
-
"oxfmt": "0.
|
|
21
|
-
"oxlint": "1.
|
|
18
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
19
|
+
"@types/node": "24.13.3",
|
|
20
|
+
"oxfmt": "0.58.0",
|
|
21
|
+
"oxlint": "1.73.0",
|
|
22
22
|
"oxlint-tsgolint": "0.24.0",
|
|
23
23
|
"typescript": "6.0.3",
|
|
24
|
-
"vitest": "4.1.
|
|
24
|
+
"vitest": "4.1.10"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
17
|
-
"@types/node": "24.13.
|
|
18
|
-
"oxfmt": "0.
|
|
19
|
-
"oxlint": "1.
|
|
16
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
17
|
+
"@types/node": "24.13.3",
|
|
18
|
+
"oxfmt": "0.58.0",
|
|
19
|
+
"oxlint": "1.73.0",
|
|
20
20
|
"oxlint-tsgolint": "0.24.0",
|
|
21
21
|
"typescript": "6.0.3"
|
|
22
22
|
}
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
19
|
-
"@types/node": "24.13.
|
|
20
|
-
"oxfmt": "0.
|
|
21
|
-
"oxlint": "1.
|
|
18
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
19
|
+
"@types/node": "24.13.3",
|
|
20
|
+
"oxfmt": "0.58.0",
|
|
21
|
+
"oxlint": "1.73.0",
|
|
22
22
|
"oxlint-tsgolint": "0.24.0",
|
|
23
23
|
"typescript": "6.0.3",
|
|
24
|
-
"vitest": "4.1.
|
|
24
|
+
"vitest": "4.1.10"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -5,7 +5,9 @@ import { user } from "./user";
|
|
|
5
5
|
|
|
6
6
|
export const comment = db
|
|
7
7
|
.table("Comment", "A comment on a task", {
|
|
8
|
-
body: db
|
|
8
|
+
body: db
|
|
9
|
+
.string()
|
|
10
|
+
.validate(({ value }) => (value.length < 1 ? "Comment must not be empty" : undefined)),
|
|
9
11
|
taskId: db.uuid().relation({
|
|
10
12
|
type: "n-1",
|
|
11
13
|
toward: { type: task },
|
|
@@ -5,12 +5,10 @@ import { user } from "./user";
|
|
|
5
5
|
|
|
6
6
|
export const task = db
|
|
7
7
|
.table("Task", "A task with comprehensive features", {
|
|
8
|
-
title: db
|
|
9
|
-
|
|
10
|
-
.
|
|
11
|
-
|
|
12
|
-
[({ value }) => value.length <= 200, "Title must be at most 200 characters"],
|
|
13
|
-
),
|
|
8
|
+
title: db.string().validate(
|
|
9
|
+
({ value }) => (value.length >= 3 ? undefined : "Title must be at least 3 characters"),
|
|
10
|
+
({ value }) => (value.length <= 200 ? undefined : "Title must be at most 200 characters"),
|
|
11
|
+
),
|
|
14
12
|
description: db.string({ optional: true }),
|
|
15
13
|
status: db.enum([
|
|
16
14
|
{ value: "TODO", description: "Not started" },
|
|
@@ -18,12 +16,10 @@ export const task = db
|
|
|
18
16
|
{ value: "DONE", description: "Completed" },
|
|
19
17
|
{ value: "CANCELLED", description: "No longer needed" },
|
|
20
18
|
]),
|
|
21
|
-
priority: db
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
[({ value }) => value <= 4, "Priority must be at most 4"],
|
|
26
|
-
),
|
|
19
|
+
priority: db.int().validate(
|
|
20
|
+
({ value }) => (value >= 0 ? undefined : "Priority must be non-negative"),
|
|
21
|
+
({ value }) => (value <= 4 ? undefined : "Priority must be at most 4"),
|
|
22
|
+
),
|
|
27
23
|
dueDate: db.datetime({ optional: true }),
|
|
28
24
|
assigneeId: db.uuid({ optional: true }).relation({
|
|
29
25
|
type: "n-1",
|
|
@@ -33,26 +29,22 @@ export const task = db
|
|
|
33
29
|
type: "n-1",
|
|
34
30
|
toward: { type: category },
|
|
35
31
|
}),
|
|
36
|
-
isArchived: db
|
|
32
|
+
isArchived: db
|
|
33
|
+
.bool()
|
|
34
|
+
.description("Whether the task is archived")
|
|
35
|
+
.hooks({
|
|
36
|
+
create: () => false,
|
|
37
|
+
}),
|
|
37
38
|
...db.fields.timestamps(),
|
|
38
39
|
})
|
|
39
|
-
.hooks({
|
|
40
|
-
isArchived: {
|
|
41
|
-
create: () => false,
|
|
42
|
-
},
|
|
43
|
-
})
|
|
44
40
|
.indexes(
|
|
45
41
|
{ fields: ["status", "priority"], unique: false },
|
|
46
42
|
{ fields: ["assigneeId", "status"], unique: false, name: "task_assignee_status_idx" },
|
|
47
43
|
)
|
|
48
|
-
.validate({
|
|
49
|
-
status
|
|
50
|
-
(
|
|
51
|
-
|
|
52
|
-
return !(value === "DONE" && d.dueDate === null);
|
|
53
|
-
},
|
|
54
|
-
"Completed tasks must have a due date",
|
|
55
|
-
],
|
|
44
|
+
.validate(({ newRecord }, issues) => {
|
|
45
|
+
if (newRecord.status === "DONE" && !newRecord.dueDate) {
|
|
46
|
+
issues("status", "Completed tasks must have a due date");
|
|
47
|
+
}
|
|
56
48
|
})
|
|
57
49
|
.permission(rolePermission)
|
|
58
50
|
.gqlPermission(roleGqlPermission);
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
"typecheck": "tsc --noEmit"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@tailor-platform/sdk": "2.0.0-next.
|
|
20
|
-
"@types/node": "24.13.
|
|
21
|
-
"graphql": "17.0.
|
|
19
|
+
"@tailor-platform/sdk": "2.0.0-next.5",
|
|
20
|
+
"@types/node": "24.13.3",
|
|
21
|
+
"graphql": "17.0.2",
|
|
22
22
|
"graphql-request": "7.4.0",
|
|
23
|
-
"oxfmt": "0.
|
|
24
|
-
"oxlint": "1.
|
|
23
|
+
"oxfmt": "0.58.0",
|
|
24
|
+
"oxlint": "1.73.0",
|
|
25
25
|
"oxlint-tsgolint": "0.24.0",
|
|
26
26
|
"typescript": "6.0.3",
|
|
27
|
-
"vitest": "4.1.
|
|
27
|
+
"vitest": "4.1.10"
|
|
28
28
|
}
|
|
29
29
|
}
|