@truecodeio/sdk-core 0.2.8 → 0.2.10

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.
@@ -148,7 +148,7 @@ declare const appRouter: import('@trpc/server').TRPCBuiltRouter<{
148
148
  content: unknown;
149
149
  createdBy: string;
150
150
  status: string;
151
- } | undefined;
151
+ };
152
152
  meta: object;
153
153
  }>;
154
154
  templateUpdate: import('@trpc/server').TRPCMutationProcedure<{
@@ -225,6 +225,44 @@ declare const appRouter: import('@trpc/server').TRPCBuiltRouter<{
225
225
  } | null;
226
226
  meta: object;
227
227
  }>;
228
+ generateImageUploadUrl: import('@trpc/server').TRPCMutationProcedure<{
229
+ input: {
230
+ templateId: string;
231
+ fileName: string;
232
+ fileSize: number;
233
+ fileType: string;
234
+ };
235
+ output: {
236
+ uploadUrl: string;
237
+ path: string;
238
+ fileName: string;
239
+ };
240
+ meta: object;
241
+ }>;
242
+ confirmImageUpload: import('@trpc/server').TRPCMutationProcedure<{
243
+ input: {
244
+ path: string;
245
+ fileName: string;
246
+ originalFileName: string;
247
+ };
248
+ output: {
249
+ url: string;
250
+ path: string;
251
+ fileName: string;
252
+ originalFileName: string;
253
+ };
254
+ meta: object;
255
+ }>;
256
+ deleteImage: import('@trpc/server').TRPCMutationProcedure<{
257
+ input: {
258
+ templateId: string;
259
+ fileName: string;
260
+ };
261
+ output: {
262
+ success: boolean;
263
+ };
264
+ meta: object;
265
+ }>;
228
266
  }>>;
229
267
  export type AppRouter = typeof appRouter;
230
268
  export {};
package/dist/client.d.ts CHANGED
@@ -151,7 +151,7 @@ export declare const createClient: ({ apiKey }: ClientConfig) => import('@trpc/c
151
151
  content: unknown;
152
152
  createdBy: string;
153
153
  status: string;
154
- } | undefined;
154
+ };
155
155
  meta: object;
156
156
  }>;
157
157
  templateUpdate: import('@trpc/server').TRPCMutationProcedure<{
@@ -228,5 +228,43 @@ export declare const createClient: ({ apiKey }: ClientConfig) => import('@trpc/c
228
228
  } | null;
229
229
  meta: object;
230
230
  }>;
231
+ generateImageUploadUrl: import('@trpc/server').TRPCMutationProcedure<{
232
+ input: {
233
+ templateId: string;
234
+ fileName: string;
235
+ fileSize: number;
236
+ fileType: string;
237
+ };
238
+ output: {
239
+ uploadUrl: string;
240
+ path: string;
241
+ fileName: string;
242
+ };
243
+ meta: object;
244
+ }>;
245
+ confirmImageUpload: import('@trpc/server').TRPCMutationProcedure<{
246
+ input: {
247
+ path: string;
248
+ fileName: string;
249
+ originalFileName: string;
250
+ };
251
+ output: {
252
+ url: string;
253
+ path: string;
254
+ fileName: string;
255
+ originalFileName: string;
256
+ };
257
+ meta: object;
258
+ }>;
259
+ deleteImage: import('@trpc/server').TRPCMutationProcedure<{
260
+ input: {
261
+ templateId: string;
262
+ fileName: string;
263
+ };
264
+ output: {
265
+ success: boolean;
266
+ };
267
+ meta: object;
268
+ }>;
231
269
  }>>>;
232
270
  export {};
package/dist/index.d.ts CHANGED
@@ -58,7 +58,22 @@ export declare const createBokoClient: (options: ClientOptions) => {
58
58
  isCollapsed: boolean;
59
59
  props: Readonly<{
60
60
  content: string;
61
- type: "paragraph" | "heading-1" | "heading-2" | "heading-3" | "heading-4" | "heading-5" | "heading-6";
61
+ }>;
62
+ }> | Readonly<{
63
+ id: string;
64
+ type: "image";
65
+ name: string;
66
+ isCollapsed: boolean;
67
+ props: Readonly<{
68
+ type: "placeholder";
69
+ }> | Readonly<{
70
+ type: "image";
71
+ url: string;
72
+ fileName: string;
73
+ altText: string;
74
+ width: number;
75
+ height: number;
76
+ preserveAspectRatio: boolean;
62
77
  }>;
63
78
  }> | Readonly<{
64
79
  id: string;
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ const i = ({ apiKey: n }) => r({
11
11
  })
12
12
  })
13
13
  ]
14
- }), d = e.object({
14
+ }), c = e.object({
15
15
  id: e.string(),
16
16
  type: e.literal("spacer"),
17
17
  name: e.string(),
@@ -19,24 +19,34 @@ const i = ({ apiKey: n }) => r({
19
19
  props: e.object({
20
20
  size: e.number()
21
21
  }).readonly()
22
- }).readonly(), c = e.object({
22
+ }).readonly(), s = e.object({
23
23
  id: e.string(),
24
24
  type: e.literal("text"),
25
25
  name: e.string(),
26
26
  isCollapsed: e.boolean(),
27
27
  props: e.object({
28
- content: e.string(),
29
- type: e.enum([
30
- "paragraph",
31
- "heading-1",
32
- "heading-2",
33
- "heading-3",
34
- "heading-4",
35
- "heading-5",
36
- "heading-6"
37
- ])
28
+ content: e.string()
38
29
  }).readonly()
39
- }).readonly(), s = e.object({
30
+ }).readonly(), d = e.object({
31
+ id: e.string(),
32
+ type: e.literal("image"),
33
+ name: e.string(),
34
+ isCollapsed: e.boolean(),
35
+ props: e.discriminatedUnion("type", [
36
+ e.object({
37
+ type: e.literal("placeholder")
38
+ }),
39
+ e.object({
40
+ type: e.literal("image"),
41
+ url: e.string(),
42
+ fileName: e.string(),
43
+ altText: e.string(),
44
+ width: e.number(),
45
+ height: e.number(),
46
+ preserveAspectRatio: e.boolean()
47
+ })
48
+ ]).readonly()
49
+ }).readonly(), m = e.object({
40
50
  id: e.string(),
41
51
  type: e.literal("button"),
42
52
  name: e.string(),
@@ -65,26 +75,31 @@ const i = ({ apiKey: n }) => r({
65
75
  fontSize: e.number().min(8).max(72).default(16),
66
76
  fontWeight: e.number().min(100).max(900).multipleOf(100).default(400)
67
77
  }).readonly()
68
- }).readonly(), m = e.enum(["default", "equal", "none"]), p = e.enum(["start", "center", "end"]), b = e.object({
78
+ }).readonly(), p = e.enum(["default", "equal", "none"]), b = e.enum(["start", "center", "end"]), g = e.object({
69
79
  id: e.string(),
70
80
  type: e.literal("column"),
71
81
  name: e.string(),
72
82
  isCollapsed: e.boolean(),
73
83
  props: e.object({
74
- flexChildSize: m,
84
+ flexChildSize: p,
75
85
  alignment: e.object({
76
- vertical: p
86
+ vertical: b
77
87
  }).readonly()
78
88
  }).readonly(),
79
89
  children: e.array(
80
- e.lazy(() => e.union([s, c, d]))
90
+ e.lazy(() => e.union([
91
+ m,
92
+ s,
93
+ c,
94
+ d
95
+ ]))
81
96
  ).readonly()
82
- }).readonly(), g = e.enum([
97
+ }).readonly(), u = e.enum([
83
98
  "default",
84
99
  "start",
85
100
  "center",
86
101
  "end"
87
- ]), u = e.object({
102
+ ]), y = e.object({
88
103
  id: e.string(),
89
104
  type: e.literal("row"),
90
105
  name: e.string(),
@@ -101,13 +116,13 @@ const i = ({ apiKey: n }) => r({
101
116
  color: e.string()
102
117
  }).readonly(),
103
118
  alignment: e.object({
104
- horizontal: g
119
+ horizontal: u
105
120
  }).readonly()
106
121
  }).readonly(),
107
122
  children: e.array(
108
- e.lazy(() => b)
123
+ e.lazy(() => g)
109
124
  ).readonly()
110
- }).readonly(), y = e.object({
125
+ }).readonly(), h = e.object({
111
126
  id: e.string(),
112
127
  type: e.literal("root"),
113
128
  name: e.string(),
@@ -116,9 +131,9 @@ const i = ({ apiKey: n }) => r({
116
131
  color: e.string()
117
132
  }).readonly(),
118
133
  children: e.array(
119
- e.lazy(() => u)
134
+ e.lazy(() => y)
120
135
  ).readonly()
121
- }).readonly(), C = (n) => {
136
+ }).readonly(), S = (n) => {
122
137
  const o = i({
123
138
  apiKey: n.apiKey
124
139
  });
@@ -130,13 +145,13 @@ const i = ({ apiKey: n }) => r({
130
145
  template: {
131
146
  ...t.template,
132
147
  // TODO: Do we need to parse the content here or on procedure level?
133
- content: y.parse(t.template.content)
148
+ content: h.parse(t.template.content)
134
149
  }
135
150
  } : null;
136
151
  }
137
152
  };
138
153
  };
139
154
  export {
140
- C as createBokoClient
155
+ S as createBokoClient
141
156
  };
142
157
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/client.ts","../../../node_modules/.pnpm/@truecodeio+domain-shared@0.1.6/node_modules/@truecodeio/domain-shared/src/schemas/tree-nodes/index.ts","../src/index.ts"],"sourcesContent":["import { createTRPCClient, httpBatchLink } from \"@trpc/client\";\nimport superjson from \"superjson\";\nimport type { AppRouter } from \"./app-router-types\";\n\ntype ClientConfig = {\n apiKey: string;\n};\n\nexport const createClient = ({ apiKey }: ClientConfig) => {\n return createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({\n transformer: superjson,\n url: __SERVER_URL__,\n headers: () => {\n return {\n Authorization: `ApiKey ${apiKey}`,\n };\n },\n }),\n ],\n });\n};\n","import { z } from \"zod\";\n\nexport const spacerNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"spacer\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n size: z.number(),\n })\n .readonly(),\n })\n .readonly();\n\nexport const textNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"text\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n content: z.string(),\n type: z.enum([\n \"paragraph\",\n \"heading-1\",\n \"heading-2\",\n \"heading-3\",\n \"heading-4\",\n \"heading-5\",\n \"heading-6\",\n ]),\n })\n .readonly(),\n })\n .readonly();\n\nexport const buttonNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"button\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n title: z.string(),\n background: z\n .object({\n color: z\n .object({\n default: z.string(),\n hover: z.string(),\n })\n .readonly(),\n })\n .readonly(),\n text: z\n .object({\n color: z\n .object({\n default: z.string(),\n hover: z.string(),\n })\n .readonly(),\n })\n .readonly(),\n padding: z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number(),\n })\n .readonly(),\n borderRadius: z.number(),\n fontSize: z.number().min(8).max(72).default(16),\n fontWeight: z.number().min(100).max(900).multipleOf(100).default(400),\n })\n .readonly(),\n })\n .readonly();\n\nexport const flexChildSizeSchema = z.enum([\"default\", \"equal\", \"none\"]);\n\nexport const verticalAlignmentSchema = z.enum([\"start\", \"center\", \"end\"]);\n\nexport const columnNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"column\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n flexChildSize: flexChildSizeSchema,\n alignment: z\n .object({\n vertical: verticalAlignmentSchema,\n })\n .readonly(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return z.union([buttonNodeSchema, textNodeSchema, spacerNodeSchema]);\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport const horizontalAlignmentSchema = z.enum([\n \"default\",\n \"start\",\n \"center\",\n \"end\",\n]);\n\nexport const rowNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"row\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n padding: z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number(),\n })\n .readonly(),\n gap: z.number(),\n background: z\n .object({\n color: z.string(),\n })\n .readonly(),\n alignment: z\n .object({\n horizontal: horizontalAlignmentSchema,\n })\n .readonly(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return columnNodeSchema;\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport const rootNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"root\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n color: z.string(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return rowNodeSchema;\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport type ButtonNodeT = z.infer<typeof buttonNodeSchema>;\n\nexport type RootNodeT = z.infer<typeof rootNodeSchema>;\n\nexport type RowNodeT = z.infer<typeof rowNodeSchema>;\n\nexport type ColumnNodeT = z.infer<typeof columnNodeSchema>;\n\nexport type TextNodeT = z.infer<typeof textNodeSchema>;\n\nexport type SpacerNodeT = z.infer<typeof spacerNodeSchema>;\n\nexport type NodeT =\n | RootNodeT\n | RowNodeT\n | ColumnNodeT\n | ButtonNodeT\n | TextNodeT\n | SpacerNodeT;\n\ntype ChildrenNonContainableNodeT = ButtonNodeT | TextNodeT | SpacerNodeT;\n\nexport type ChildrenContainableNodeT = Exclude<\n NodeT,\n ChildrenNonContainableNodeT\n>;\n\nexport type ChildrenNodeT = Exclude<NodeT, RootNodeT>;\n\nexport type NodeByTypeT = {\n [N in NodeT as N[\"type\"]]: N;\n};\n","import { createClient } from \"./client.ts\";\nimport { rootNodeSchema } from \"@truecodeio/domain-shared/schemas/tree-nodes/index.ts\";\n\ntype ClientOptions = {\n apiKey: string;\n};\n\nexport const createBokoClient = (options: ClientOptions) => {\n const client = createClient({\n apiKey: options.apiKey,\n });\n\n return {\n getEligibleCampaign: async () => {\n const eligibleCampaign = await client.getEligibleCampaign.query();\n\n if (!eligibleCampaign) {\n return null;\n }\n\n return {\n ...eligibleCampaign,\n template: {\n ...eligibleCampaign.template,\n // TODO: Do we need to parse the content here or on procedure level?\n content: rootNodeSchema.parse(eligibleCampaign.template.content),\n },\n };\n },\n };\n};\n\nexport type EligibleCampaign = NonNullable<\n Awaited<\n ReturnType<ReturnType<typeof createBokoClient>[\"getEligibleCampaign\"]>\n >\n>;\n"],"names":["createClient","apiKey","createTRPCClient","httpBatchLink","superjson","spacerNodeSchema","z","textNodeSchema","buttonNodeSchema","flexChildSizeSchema","verticalAlignmentSchema","columnNodeSchema","horizontalAlignmentSchema","rowNodeSchema","rootNodeSchema","createBokoClient","options","client","eligibleCampaign"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"index.js","sources":["../src/client.ts","../../../node_modules/.pnpm/@truecodeio+domain-shared@0.1.7/node_modules/@truecodeio/domain-shared/src/schemas/tree-nodes/index.ts","../src/index.ts"],"sourcesContent":["import { createTRPCClient, httpBatchLink } from \"@trpc/client\";\nimport superjson from \"superjson\";\nimport type { AppRouter } from \"./app-router-types\";\n\ntype ClientConfig = {\n apiKey: string;\n};\n\nexport const createClient = ({ apiKey }: ClientConfig) => {\n return createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({\n transformer: superjson,\n url: __SERVER_URL__,\n headers: () => {\n return {\n Authorization: `ApiKey ${apiKey}`,\n };\n },\n }),\n ],\n });\n};\n","import { z } from \"zod\";\n\nexport const spacerNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"spacer\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n size: z.number(),\n })\n .readonly(),\n })\n .readonly();\n\nexport const textNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"text\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n content: z.string(),\n })\n .readonly(),\n })\n .readonly();\n\nexport const imageNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"image\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"placeholder\"),\n }),\n z.object({\n type: z.literal(\"image\"),\n url: z.string(),\n fileName: z.string(),\n altText: z.string(),\n width: z.number(),\n height: z.number(),\n preserveAspectRatio: z.boolean(),\n }),\n ])\n .readonly(),\n })\n .readonly();\n\nexport const buttonNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"button\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n title: z.string(),\n background: z\n .object({\n color: z\n .object({\n default: z.string(),\n hover: z.string(),\n })\n .readonly(),\n })\n .readonly(),\n text: z\n .object({\n color: z\n .object({\n default: z.string(),\n hover: z.string(),\n })\n .readonly(),\n })\n .readonly(),\n padding: z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number(),\n })\n .readonly(),\n borderRadius: z.number(),\n fontSize: z.number().min(8).max(72).default(16),\n fontWeight: z.number().min(100).max(900).multipleOf(100).default(400),\n })\n .readonly(),\n })\n .readonly();\n\nexport const flexChildSizeSchema = z.enum([\"default\", \"equal\", \"none\"]);\n\nexport const verticalAlignmentSchema = z.enum([\"start\", \"center\", \"end\"]);\n\nexport const columnNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"column\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n flexChildSize: flexChildSizeSchema,\n alignment: z\n .object({\n vertical: verticalAlignmentSchema,\n })\n .readonly(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return z.union([\n buttonNodeSchema,\n textNodeSchema,\n spacerNodeSchema,\n imageNodeSchema,\n ]);\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport const horizontalAlignmentSchema = z.enum([\n \"default\",\n \"start\",\n \"center\",\n \"end\",\n]);\n\nexport const rowNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"row\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n padding: z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number(),\n })\n .readonly(),\n gap: z.number(),\n background: z\n .object({\n color: z.string(),\n })\n .readonly(),\n alignment: z\n .object({\n horizontal: horizontalAlignmentSchema,\n })\n .readonly(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return columnNodeSchema;\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport const rootNodeSchema = z\n .object({\n id: z.string(),\n type: z.literal(\"root\"),\n name: z.string(),\n isCollapsed: z.boolean(),\n props: z\n .object({\n color: z.string(),\n })\n .readonly(),\n children: z\n .array(\n z.lazy(() => {\n return rowNodeSchema;\n }),\n )\n .readonly(),\n })\n .readonly();\n\nexport type ButtonNodeT = z.infer<typeof buttonNodeSchema>;\n\nexport type RootNodeT = z.infer<typeof rootNodeSchema>;\n\nexport type RowNodeT = z.infer<typeof rowNodeSchema>;\n\nexport type ColumnNodeT = z.infer<typeof columnNodeSchema>;\n\nexport type TextNodeT = z.infer<typeof textNodeSchema>;\n\nexport type SpacerNodeT = z.infer<typeof spacerNodeSchema>;\n\nexport type ImageNodeT = z.infer<typeof imageNodeSchema>;\n\nexport type NodeT =\n | RootNodeT\n | RowNodeT\n | ColumnNodeT\n | ButtonNodeT\n | TextNodeT\n | SpacerNodeT\n | ImageNodeT;\n\ntype ChildrenNonContainableNodeT =\n | ButtonNodeT\n | TextNodeT\n | SpacerNodeT\n | ImageNodeT;\n\nexport type ChildrenContainableNodeT = Exclude<\n NodeT,\n ChildrenNonContainableNodeT\n>;\n\nexport type ChildrenNodeT = Exclude<NodeT, RootNodeT>;\n\nexport type NodeByTypeT = {\n [N in NodeT as N[\"type\"]]: N;\n};\n","import { createClient } from \"./client.ts\";\nimport { rootNodeSchema } from \"@truecodeio/domain-shared/schemas/tree-nodes/index.ts\";\n\ntype ClientOptions = {\n apiKey: string;\n};\n\nexport const createBokoClient = (options: ClientOptions) => {\n const client = createClient({\n apiKey: options.apiKey,\n });\n\n return {\n getEligibleCampaign: async () => {\n const eligibleCampaign = await client.getEligibleCampaign.query();\n\n if (!eligibleCampaign) {\n return null;\n }\n\n return {\n ...eligibleCampaign,\n template: {\n ...eligibleCampaign.template,\n // TODO: Do we need to parse the content here or on procedure level?\n content: rootNodeSchema.parse(eligibleCampaign.template.content),\n },\n };\n },\n };\n};\n\nexport type EligibleCampaign = NonNullable<\n Awaited<\n ReturnType<ReturnType<typeof createBokoClient>[\"getEligibleCampaign\"]>\n >\n>;\n"],"names":["createClient","apiKey","createTRPCClient","httpBatchLink","superjson","spacerNodeSchema","z","textNodeSchema","imageNodeSchema","buttonNodeSchema","flexChildSizeSchema","verticalAlignmentSchema","columnNodeSchema","horizontalAlignmentSchema","rowNodeSchema","rootNodeSchema","createBokoClient","options","client","eligibleCampaign"],"mappings":"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","x_google_ignoreList":[1]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truecodeio/sdk-core",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -12,15 +12,15 @@
12
12
  "dist"
13
13
  ],
14
14
  "dependencies": {
15
- "@trpc/client": "^11.4.3",
16
- "@trpc/server": "11.4.3",
17
- "@truecodeio/domain-shared": "^0.1.6",
15
+ "@trpc/client": "^11.4.4",
16
+ "@trpc/server": "^11.4.4",
17
+ "@truecodeio/domain-shared": "^0.1.7",
18
18
  "superjson": "^2.2.2",
19
- "zod": "^4.0.5"
19
+ "zod": "^4.0.17"
20
20
  },
21
21
  "devDependencies": {
22
- "typescript-eslint": "^8.38.0",
23
- "vite": "^7.0.5",
22
+ "typescript-eslint": "^8.39.1",
23
+ "vite": "^7.1.2",
24
24
  "vite-plugin-dts": "^4.5.4",
25
25
  "@boko/eslint-config": "1.0.0",
26
26
  "@boko/tsconfig": "^1.0.0"