@purpleschool/gptbot 0.12.67 → 0.12.69
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/api/controllers/http/canvas-template.ts +10 -0
- package/api/controllers/http/index.ts +2 -0
- package/api/routes.ts +13 -0
- package/build/api/controllers/http/canvas-template.js +12 -0
- package/build/api/controllers/http/index.js +1 -0
- package/build/api/routes.js +8 -0
- package/build/commands/canvas-template/create-canvas-from-template.command.js +17 -0
- package/build/commands/canvas-template/create-canvas-template.command.js +18 -0
- package/build/commands/canvas-template/delete-canvas-template.command.js +15 -0
- package/build/commands/canvas-template/find-canvas-template-by-uuid.query.js +14 -0
- package/build/commands/canvas-template/find-canvas-templates.query.js +18 -0
- package/build/commands/canvas-template/index.js +22 -0
- package/build/commands/canvas-template/update-canvas-template.command.js +21 -0
- package/build/commands/index.js +1 -0
- package/build/models/canvas-template.schema.js +63 -0
- package/build/models/index.js +1 -0
- package/build/models/tools/diagrams/diagrams-model.schema.js +0 -2
- package/commands/canvas-template/create-canvas-from-template.command.ts +19 -0
- package/commands/canvas-template/create-canvas-template.command.ts +20 -0
- package/commands/canvas-template/delete-canvas-template.command.ts +17 -0
- package/commands/canvas-template/find-canvas-template-by-uuid.query.ts +16 -0
- package/commands/canvas-template/find-canvas-templates.query.ts +20 -0
- package/commands/canvas-template/index.ts +6 -0
- package/commands/canvas-template/update-canvas-template.command.ts +26 -0
- package/commands/index.ts +2 -0
- package/models/canvas-template.schema.ts +68 -0
- package/models/index.ts +2 -0
- package/models/tools/diagrams/diagrams-model.schema.ts +0 -2
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const CANVAS_TEMPLATE_PRIVATE_CONTROLLER = 'private/canvas-template' as const;
|
|
2
|
+
|
|
3
|
+
export const CANVAS_TEMPLATE_ROUTES = {
|
|
4
|
+
CREATE: '',
|
|
5
|
+
CREATE_CANVAS: (uuid: string) => `${uuid}`,
|
|
6
|
+
GET_ALL: '',
|
|
7
|
+
FIND_BY_UUID: (uuid: string) => `${uuid}`,
|
|
8
|
+
UPDATE: (uuid: string) => `${uuid}`,
|
|
9
|
+
DELETE: (uuid: string) => `${uuid}`,
|
|
10
|
+
} as const;
|
package/api/routes.ts
CHANGED
|
@@ -366,6 +366,19 @@ export const REST_API = {
|
|
|
366
366
|
DELETE: (uuid: string) =>
|
|
367
367
|
`${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.DELETE(uuid)}`,
|
|
368
368
|
},
|
|
369
|
+
|
|
370
|
+
CANVAS_TEMPLATE_PRIVATE: {
|
|
371
|
+
CREATE_CANVAS: (uuid: string) =>
|
|
372
|
+
`${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE_CANVAS(uuid)}`,
|
|
373
|
+
FIND_BY_UUID: (uuid: string) =>
|
|
374
|
+
`${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
375
|
+
GET_ALL: `${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.GET_ALL}`,
|
|
376
|
+
CREATE: `${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE}`,
|
|
377
|
+
UPDATE: (uuid: string) =>
|
|
378
|
+
`${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.UPDATE(uuid)}`,
|
|
379
|
+
DELETE: (uuid: string) =>
|
|
380
|
+
`${ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.DELETE(uuid)}`,
|
|
381
|
+
},
|
|
369
382
|
CANVAS_PRIVATE: {
|
|
370
383
|
FIND_BY_UUID: (uuid: string) =>
|
|
371
384
|
`${ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CANVAS_TEMPLATE_ROUTES = exports.CANVAS_TEMPLATE_PRIVATE_CONTROLLER = void 0;
|
|
4
|
+
exports.CANVAS_TEMPLATE_PRIVATE_CONTROLLER = 'private/canvas-template';
|
|
5
|
+
exports.CANVAS_TEMPLATE_ROUTES = {
|
|
6
|
+
CREATE: '',
|
|
7
|
+
CREATE_CANVAS: (uuid) => `${uuid}`,
|
|
8
|
+
GET_ALL: '',
|
|
9
|
+
FIND_BY_UUID: (uuid) => `${uuid}`,
|
|
10
|
+
UPDATE: (uuid) => `${uuid}`,
|
|
11
|
+
DELETE: (uuid) => `${uuid}`,
|
|
12
|
+
};
|
|
@@ -86,3 +86,4 @@ __exportStar(require("./team-account"), exports);
|
|
|
86
86
|
__exportStar(require("./spell-corrector"), exports);
|
|
87
87
|
__exportStar(require("./tool-workspace"), exports);
|
|
88
88
|
__exportStar(require("./html-page-builder"), exports);
|
|
89
|
+
__exportStar(require("./canvas-template"), exports);
|
package/build/api/routes.js
CHANGED
|
@@ -321,6 +321,14 @@ exports.REST_API = {
|
|
|
321
321
|
UPDATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.UPDATE(uuid)}`,
|
|
322
322
|
DELETE: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.DELETE(uuid)}`,
|
|
323
323
|
},
|
|
324
|
+
CANVAS_TEMPLATE_PRIVATE: {
|
|
325
|
+
CREATE_CANVAS: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE_CANVAS(uuid)}`,
|
|
326
|
+
FIND_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
327
|
+
GET_ALL: `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.GET_ALL}`,
|
|
328
|
+
CREATE: `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.CREATE}`,
|
|
329
|
+
UPDATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.UPDATE(uuid)}`,
|
|
330
|
+
DELETE: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_TEMPLATE_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_TEMPLATE_ROUTES.DELETE(uuid)}`,
|
|
331
|
+
},
|
|
324
332
|
CANVAS_PRIVATE: {
|
|
325
333
|
FIND_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.FIND_BY_UUID(uuid)}`,
|
|
326
334
|
GET_ALL: `${exports.ROOT}/${CONTROLLERS.CANVAS_PRIVATE_CONTROLLER}/${CONTROLLERS.CANVAS_ROUTES.GET_ALL}`,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateCanvasFromTemplateCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var CreateCanvasFromTemplateCommand;
|
|
7
|
+
(function (CreateCanvasFromTemplateCommand) {
|
|
8
|
+
CreateCanvasFromTemplateCommand.RequestParamSchema = zod_1.z.object({
|
|
9
|
+
uuid: zod_1.z.string().uuid(),
|
|
10
|
+
});
|
|
11
|
+
CreateCanvasFromTemplateCommand.ResponseSchema = zod_1.z.object({
|
|
12
|
+
data: models_1.CanvasSchema.extend({
|
|
13
|
+
nodes: zod_1.z.array(models_1.CanvasNodeSchema),
|
|
14
|
+
edges: zod_1.z.array(models_1.CanvasEdgeSchema),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
})(CreateCanvasFromTemplateCommand || (exports.CreateCanvasFromTemplateCommand = CreateCanvasFromTemplateCommand = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateCanvasTemplateCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var CreateCanvasTemplateCommand;
|
|
7
|
+
(function (CreateCanvasTemplateCommand) {
|
|
8
|
+
CreateCanvasTemplateCommand.RequestSchema = zod_1.z.object({
|
|
9
|
+
name: zod_1.z.string().trim().min(1),
|
|
10
|
+
description: zod_1.z.string().trim().min(1).optional().nullable(),
|
|
11
|
+
previewImageUrl: zod_1.z.string().url().optional().nullable(),
|
|
12
|
+
tags: zod_1.z.array(zod_1.z.string().trim().min(1)).default([]),
|
|
13
|
+
graph: models_1.CanvasTemplateGraphSchema,
|
|
14
|
+
});
|
|
15
|
+
CreateCanvasTemplateCommand.ResponseSchema = zod_1.z.object({
|
|
16
|
+
data: models_1.CanvasTemplateSchema,
|
|
17
|
+
});
|
|
18
|
+
})(CreateCanvasTemplateCommand || (exports.CreateCanvasTemplateCommand = CreateCanvasTemplateCommand = {}));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteCanvasTemplateCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
var DeleteCanvasTemplateCommand;
|
|
6
|
+
(function (DeleteCanvasTemplateCommand) {
|
|
7
|
+
DeleteCanvasTemplateCommand.RequestParamSchema = zod_1.z.object({
|
|
8
|
+
uuid: zod_1.z.string().uuid(),
|
|
9
|
+
});
|
|
10
|
+
DeleteCanvasTemplateCommand.ResponseSchema = zod_1.z.object({
|
|
11
|
+
data: zod_1.z.object({
|
|
12
|
+
isDeleted: zod_1.z.boolean(),
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
})(DeleteCanvasTemplateCommand || (exports.DeleteCanvasTemplateCommand = DeleteCanvasTemplateCommand = {}));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FindCanvasTemplateByUuidQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var FindCanvasTemplateByUuidQuery;
|
|
7
|
+
(function (FindCanvasTemplateByUuidQuery) {
|
|
8
|
+
FindCanvasTemplateByUuidQuery.RequestSchema = models_1.CanvasTemplateSchema.pick({
|
|
9
|
+
uuid: true,
|
|
10
|
+
});
|
|
11
|
+
FindCanvasTemplateByUuidQuery.ResponseSchema = zod_1.z.object({
|
|
12
|
+
data: models_1.CanvasTemplateSchema,
|
|
13
|
+
});
|
|
14
|
+
})(FindCanvasTemplateByUuidQuery || (exports.FindCanvasTemplateByUuidQuery = FindCanvasTemplateByUuidQuery = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FindCanvasTemplatesQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var FindCanvasTemplatesQuery;
|
|
7
|
+
(function (FindCanvasTemplatesQuery) {
|
|
8
|
+
FindCanvasTemplatesQuery.RequestSchema = zod_1.z.object({
|
|
9
|
+
limit: zod_1.z.coerce.number().min(1).default(10),
|
|
10
|
+
offset: zod_1.z.coerce.number().min(0).default(0),
|
|
11
|
+
search: zod_1.z.string().trim().optional(),
|
|
12
|
+
});
|
|
13
|
+
FindCanvasTemplatesQuery.ResponseSchema = zod_1.z.object({
|
|
14
|
+
data: zod_1.z.array(models_1.CanvasTemplateSchema),
|
|
15
|
+
page: zod_1.z.number(),
|
|
16
|
+
totalPages: zod_1.z.number(),
|
|
17
|
+
});
|
|
18
|
+
})(FindCanvasTemplatesQuery || (exports.FindCanvasTemplatesQuery = FindCanvasTemplatesQuery = {}));
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./create-canvas-template.command"), exports);
|
|
18
|
+
__exportStar(require("./create-canvas-from-template.command"), exports);
|
|
19
|
+
__exportStar(require("./delete-canvas-template.command"), exports);
|
|
20
|
+
__exportStar(require("./find-canvas-template-by-uuid.query"), exports);
|
|
21
|
+
__exportStar(require("./find-canvas-templates.query"), exports);
|
|
22
|
+
__exportStar(require("./update-canvas-template.command"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateCanvasTemplateCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var UpdateCanvasTemplateCommand;
|
|
7
|
+
(function (UpdateCanvasTemplateCommand) {
|
|
8
|
+
UpdateCanvasTemplateCommand.RequestParamSchema = models_1.CanvasTemplateSchema.pick({
|
|
9
|
+
uuid: true,
|
|
10
|
+
});
|
|
11
|
+
UpdateCanvasTemplateCommand.RequestSchema = zod_1.z.object({
|
|
12
|
+
name: zod_1.z.string().trim().min(1).optional(),
|
|
13
|
+
description: zod_1.z.string().trim().min(1).optional().nullable(),
|
|
14
|
+
previewImageUrl: zod_1.z.string().url().optional().nullable(),
|
|
15
|
+
tags: zod_1.z.array(zod_1.z.string().trim().min(1)).optional(),
|
|
16
|
+
graph: models_1.CanvasTemplateGraphSchema.optional(),
|
|
17
|
+
});
|
|
18
|
+
UpdateCanvasTemplateCommand.ResponseSchema = zod_1.z.object({
|
|
19
|
+
data: models_1.CanvasTemplateSchema,
|
|
20
|
+
});
|
|
21
|
+
})(UpdateCanvasTemplateCommand || (exports.UpdateCanvasTemplateCommand = UpdateCanvasTemplateCommand = {}));
|
package/build/commands/index.js
CHANGED
|
@@ -65,3 +65,4 @@ __exportStar(require("./user-profile"), exports);
|
|
|
65
65
|
__exportStar(require("./team-account"), exports);
|
|
66
66
|
__exportStar(require("./team-to-subscription"), exports);
|
|
67
67
|
__exportStar(require("./team-to-product"), exports);
|
|
68
|
+
__exportStar(require("./canvas-template"), exports);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CanvasTemplateSchema = exports.CanvasTemplateGraphSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const canvas_node_schema_1 = require("./canvas-node.schema");
|
|
7
|
+
const CanvasTemplateGraphNodeSchema = zod_1.z.object({
|
|
8
|
+
uuid: zod_1.z.string().trim().min(1),
|
|
9
|
+
nodeDefinitionId: zod_1.z.nativeEnum(constants_1.CANVAS_NODE_TYPE),
|
|
10
|
+
position: canvas_node_schema_1.CanvasNodePositionSchema,
|
|
11
|
+
params: canvas_node_schema_1.CanvasNodeParamsSchema.nullable().optional(),
|
|
12
|
+
});
|
|
13
|
+
const CanvasTemplateGraphEdgeSchema = zod_1.z.object({
|
|
14
|
+
sourceId: zod_1.z.string().trim().min(1),
|
|
15
|
+
targetId: zod_1.z.string().trim().min(1),
|
|
16
|
+
handle: zod_1.z.nativeEnum(constants_1.INPUT_OUTPUT_TYPE),
|
|
17
|
+
});
|
|
18
|
+
exports.CanvasTemplateGraphSchema = zod_1.z
|
|
19
|
+
.object({
|
|
20
|
+
nodes: zod_1.z.array(CanvasTemplateGraphNodeSchema),
|
|
21
|
+
edges: zod_1.z.array(CanvasTemplateGraphEdgeSchema),
|
|
22
|
+
})
|
|
23
|
+
.superRefine((graph, ctx) => {
|
|
24
|
+
const nodeIds = new Set();
|
|
25
|
+
for (const [index, node] of graph.nodes.entries()) {
|
|
26
|
+
if (nodeIds.has(node.uuid)) {
|
|
27
|
+
ctx.addIssue({
|
|
28
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
29
|
+
path: ['nodes', index, 'uuid'],
|
|
30
|
+
message: `Duplicate node id: ${node.uuid}`,
|
|
31
|
+
});
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
nodeIds.add(node.uuid);
|
|
35
|
+
}
|
|
36
|
+
for (const [index, edge] of graph.edges.entries()) {
|
|
37
|
+
if (!nodeIds.has(edge.sourceId)) {
|
|
38
|
+
ctx.addIssue({
|
|
39
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
40
|
+
path: ['edges', index, 'sourceId'],
|
|
41
|
+
message: `Source node not found: ${edge.sourceId}`,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
if (!nodeIds.has(edge.targetId)) {
|
|
45
|
+
ctx.addIssue({
|
|
46
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
47
|
+
path: ['edges', index, 'targetId'],
|
|
48
|
+
message: `Target node not found: ${edge.targetId}`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
exports.CanvasTemplateSchema = zod_1.z.object({
|
|
54
|
+
uuid: zod_1.z.string().uuid(),
|
|
55
|
+
name: zod_1.z.string(),
|
|
56
|
+
description: zod_1.z.string().nullable(),
|
|
57
|
+
userId: zod_1.z.string().uuid().nullable(),
|
|
58
|
+
previewImageUrl: zod_1.z.string().url().nullable(),
|
|
59
|
+
tags: zod_1.z.array(zod_1.z.string()),
|
|
60
|
+
graph: exports.CanvasTemplateGraphSchema,
|
|
61
|
+
createdAt: zod_1.z.date(),
|
|
62
|
+
updatedAt: zod_1.z.date(),
|
|
63
|
+
});
|
package/build/models/index.js
CHANGED
|
@@ -83,3 +83,4 @@ __exportStar(require("./user-profile.schema"), exports);
|
|
|
83
83
|
__exportStar(require("./b2b"), exports);
|
|
84
84
|
__exportStar(require("./json-value.schema"), exports);
|
|
85
85
|
__exportStar(require("./team-account"), exports);
|
|
86
|
+
__exportStar(require("./canvas-template.schema"), exports);
|
|
@@ -7,8 +7,6 @@ const constants_1 = require("../../../constants");
|
|
|
7
7
|
exports.DiagramsModelConfigSchema = zod_1.z.object({
|
|
8
8
|
dataAttachment: zod_1.z.object({
|
|
9
9
|
supported: zod_1.z.boolean(),
|
|
10
|
-
maxFileSizeMb: zod_1.z.number(),
|
|
11
|
-
acceptedTypes: zod_1.z.array(zod_1.z.string()),
|
|
12
10
|
}),
|
|
13
11
|
});
|
|
14
12
|
exports.DiagramsModelSchema = zod_1.z.object({
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CanvasEdgeSchema, CanvasNodeSchema, CanvasSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace CreateCanvasFromTemplateCommand {
|
|
5
|
+
export const RequestParamSchema = z.object({
|
|
6
|
+
uuid: z.string().uuid(),
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export type RequestParam = z.infer<typeof RequestParamSchema>;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = z.object({
|
|
12
|
+
data: CanvasSchema.extend({
|
|
13
|
+
nodes: z.array(CanvasNodeSchema),
|
|
14
|
+
edges: z.array(CanvasEdgeSchema),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CanvasTemplateSchema, CanvasTemplateGraphSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace CreateCanvasTemplateCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
name: z.string().trim().min(1),
|
|
7
|
+
description: z.string().trim().min(1).optional().nullable(),
|
|
8
|
+
previewImageUrl: z.string().url().optional().nullable(),
|
|
9
|
+
tags: z.array(z.string().trim().min(1)).default([]),
|
|
10
|
+
graph: CanvasTemplateGraphSchema,
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
14
|
+
|
|
15
|
+
export const ResponseSchema = z.object({
|
|
16
|
+
data: CanvasTemplateSchema,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export namespace DeleteCanvasTemplateCommand {
|
|
4
|
+
export const RequestParamSchema = z.object({
|
|
5
|
+
uuid: z.string().uuid(),
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export type RequestParam = z.infer<typeof RequestParamSchema>;
|
|
9
|
+
|
|
10
|
+
export const ResponseSchema = z.object({
|
|
11
|
+
data: z.object({
|
|
12
|
+
isDeleted: z.boolean(),
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CanvasTemplateSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace FindCanvasTemplateByUuidQuery {
|
|
5
|
+
export const RequestSchema = CanvasTemplateSchema.pick({
|
|
6
|
+
uuid: true,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = z.object({
|
|
12
|
+
data: CanvasTemplateSchema,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CanvasTemplateSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace FindCanvasTemplatesQuery {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
limit: z.coerce.number().min(1).default(10),
|
|
7
|
+
offset: z.coerce.number().min(0).default(0),
|
|
8
|
+
search: z.string().trim().optional(),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
12
|
+
|
|
13
|
+
export const ResponseSchema = z.object({
|
|
14
|
+
data: z.array(CanvasTemplateSchema),
|
|
15
|
+
page: z.number(),
|
|
16
|
+
totalPages: z.number(),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './create-canvas-template.command';
|
|
2
|
+
export * from './create-canvas-from-template.command';
|
|
3
|
+
export * from './delete-canvas-template.command';
|
|
4
|
+
export * from './find-canvas-template-by-uuid.query';
|
|
5
|
+
export * from './find-canvas-templates.query';
|
|
6
|
+
export * from './update-canvas-template.command';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CanvasTemplateSchema, CanvasTemplateGraphSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace UpdateCanvasTemplateCommand {
|
|
5
|
+
export const RequestParamSchema = CanvasTemplateSchema.pick({
|
|
6
|
+
uuid: true,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export type RequestParam = z.infer<typeof RequestParamSchema>;
|
|
10
|
+
|
|
11
|
+
export const RequestSchema = z.object({
|
|
12
|
+
name: z.string().trim().min(1).optional(),
|
|
13
|
+
description: z.string().trim().min(1).optional().nullable(),
|
|
14
|
+
previewImageUrl: z.string().url().optional().nullable(),
|
|
15
|
+
tags: z.array(z.string().trim().min(1)).optional(),
|
|
16
|
+
graph: CanvasTemplateGraphSchema.optional(),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
20
|
+
|
|
21
|
+
export const ResponseSchema = z.object({
|
|
22
|
+
data: CanvasTemplateSchema,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
26
|
+
}
|
package/commands/index.ts
CHANGED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { INPUT_OUTPUT_TYPE, CANVAS_NODE_TYPE } from '../constants';
|
|
3
|
+
import { CanvasNodeParamsSchema, CanvasNodePositionSchema } from './canvas-node.schema';
|
|
4
|
+
|
|
5
|
+
const CanvasTemplateGraphNodeSchema = z.object({
|
|
6
|
+
uuid: z.string().trim().min(1),
|
|
7
|
+
nodeDefinitionId: z.nativeEnum(CANVAS_NODE_TYPE),
|
|
8
|
+
position: CanvasNodePositionSchema,
|
|
9
|
+
params: CanvasNodeParamsSchema.nullable().optional(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const CanvasTemplateGraphEdgeSchema = z.object({
|
|
13
|
+
sourceId: z.string().trim().min(1),
|
|
14
|
+
targetId: z.string().trim().min(1),
|
|
15
|
+
handle: z.nativeEnum(INPUT_OUTPUT_TYPE),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export const CanvasTemplateGraphSchema = z
|
|
19
|
+
.object({
|
|
20
|
+
nodes: z.array(CanvasTemplateGraphNodeSchema),
|
|
21
|
+
edges: z.array(CanvasTemplateGraphEdgeSchema),
|
|
22
|
+
})
|
|
23
|
+
.superRefine((graph, ctx) => {
|
|
24
|
+
const nodeIds = new Set<string>();
|
|
25
|
+
for (const [index, node] of graph.nodes.entries()) {
|
|
26
|
+
if (nodeIds.has(node.uuid)) {
|
|
27
|
+
ctx.addIssue({
|
|
28
|
+
code: z.ZodIssueCode.custom,
|
|
29
|
+
path: ['nodes', index, 'uuid'],
|
|
30
|
+
message: `Duplicate node id: ${node.uuid}`,
|
|
31
|
+
});
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
nodeIds.add(node.uuid);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for (const [index, edge] of graph.edges.entries()) {
|
|
38
|
+
if (!nodeIds.has(edge.sourceId)) {
|
|
39
|
+
ctx.addIssue({
|
|
40
|
+
code: z.ZodIssueCode.custom,
|
|
41
|
+
path: ['edges', index, 'sourceId'],
|
|
42
|
+
message: `Source node not found: ${edge.sourceId}`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (!nodeIds.has(edge.targetId)) {
|
|
47
|
+
ctx.addIssue({
|
|
48
|
+
code: z.ZodIssueCode.custom,
|
|
49
|
+
path: ['edges', index, 'targetId'],
|
|
50
|
+
message: `Target node not found: ${edge.targetId}`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export type CanvasTemplateGraph = z.infer<typeof CanvasTemplateGraphSchema>;
|
|
57
|
+
|
|
58
|
+
export const CanvasTemplateSchema = z.object({
|
|
59
|
+
uuid: z.string().uuid(),
|
|
60
|
+
name: z.string(),
|
|
61
|
+
description: z.string().nullable(),
|
|
62
|
+
userId: z.string().uuid().nullable(),
|
|
63
|
+
previewImageUrl: z.string().url().nullable(),
|
|
64
|
+
tags: z.array(z.string()),
|
|
65
|
+
graph: CanvasTemplateGraphSchema,
|
|
66
|
+
createdAt: z.date(),
|
|
67
|
+
updatedAt: z.date(),
|
|
68
|
+
});
|
package/models/index.ts
CHANGED