@ventori/contracts 0.1.0 → 0.1.2

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.mjs CHANGED
@@ -25,7 +25,7 @@ var ErrorResponseSchema = z2.object({
25
25
  message: z2.string(),
26
26
  statusCode: z2.number(),
27
27
  error: z2.string().optional(),
28
- details: z2.record(z2.unknown()).optional()
28
+ details: z2.record(z2.string(), z2.unknown()).optional()
29
29
  });
30
30
  var NotFoundResponseSchema = z2.object({
31
31
  message: z2.string()
@@ -116,31 +116,28 @@ function createCrudEndpoints(c2, resource, schemas, plural) {
116
116
  // src/common/crud-handler.ts
117
117
  function createCrudHandlers(service) {
118
118
  return {
119
- list: async ({ query }) => {
119
+ list: async (query) => {
120
120
  const data = await service.list(query);
121
121
  return { status: 200, body: data };
122
122
  },
123
- findById: async ({ params }) => {
124
- const entity = await service.findById(params.id);
123
+ findById: async (id) => {
124
+ const entity = await service.findById(id);
125
125
  if (!entity)
126
126
  return { status: 404, body: { message: "Not found" } };
127
127
  return { status: 200, body: entity };
128
128
  },
129
- create: async ({ body }) => {
130
- const entity = await service.create(body);
129
+ create: async (data) => {
130
+ const entity = await service.create(data);
131
131
  return { status: 201, body: entity };
132
132
  },
133
- update: async ({
134
- params,
135
- body
136
- }) => {
137
- const entity = await service.update(params.id, body);
133
+ update: async (id, data) => {
134
+ const entity = await service.update(id, data);
138
135
  if (!entity)
139
136
  return { status: 404, body: { message: "Not found" } };
140
137
  return { status: 200, body: entity };
141
138
  },
142
- remove: async ({ params }) => {
143
- await service.remove(params.id);
139
+ remove: async (id) => {
140
+ await service.remove(id);
144
141
  return { status: 204, body: void 0 };
145
142
  }
146
143
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/pagination.ts","../src/common/error.schema.ts","../src/common/api-response.ts","../src/common/contract-instance.ts","../src/common/http-methods.ts","../src/common/crud-factory.ts","../src/common/crud-handler.ts","../src/user/user.schema.ts","../src/user/user.contract.ts","../src/product/product.schema.ts","../src/product/product.contract.ts","../src/order/order.schema.ts","../src/order/order.contract.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PaginationQuerySchema = z.object({\n page: z.coerce.number().int().positive().default(1),\n pageSize: z.coerce.number().int().positive().max(100).default(20),\n sortBy: z.string().optional(),\n sortOrder: z.enum([\"asc\", \"desc\"]).default(\"desc\"),\n});\n\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginationSchema = z.object({\n page: z.number(),\n pageSize: z.number(),\n total: z.number(),\n totalPages: z.number(),\n hasNext: z.boolean(),\n hasPrev: z.boolean(),\n});\n\nexport type Pagination = z.infer<typeof PaginationSchema>;\n\nexport const DataResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>\n z.object({\n data: z.array(itemSchema),\n pagination: PaginationSchema,\n });\n\nexport type DataResponse<T> = {\n data: T[];\n pagination: Pagination;\n};\n","import { z } from \"zod\";\n\nexport const ErrorResponseSchema = z.object({\n message: z.string(),\n statusCode: z.number(),\n error: z.string().optional(),\n details: z.record(z.unknown()).optional(),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\nexport const NotFoundResponseSchema = z.object({\n message: z.string(),\n});\n\nexport const ValidationErrorSchema = z.object({\n message: z.string(),\n statusCode: z.number().default(400),\n error: z.string().default(\"Bad Request\"),\n details: z.array(\n z.object({\n field: z.string(),\n message: z.string(),\n }),\n ),\n});\n\nexport type ValidationError = z.infer<typeof ValidationErrorSchema>;\n","import { z } from \"zod\";\nimport { DataResponseSchema } from \"./pagination\";\n\nexport const ApiSuccessResponseSchema = <T extends z.ZodTypeAny>(\n dataSchema: T,\n) =>\n z.object({\n success: z.literal(true),\n data: dataSchema,\n });\n\nexport const ApiErrorResponseSchema = z.object({\n success: z.literal(false),\n message: z.string(),\n statusCode: z.number(),\n error: z.string().optional(),\n});\n\nexport const ApiPaginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n success: z.literal(true),\n ...DataResponseSchema(itemSchema).shape,\n });\n","import { initContract } from \"@ts-rest/core\";\n\nexport type ContractInstance = ReturnType<typeof initContract>;\n\nexport const c: ContractInstance = initContract();\n","export const HttpMethod = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n PATCH: 'PATCH',\n DELETE: 'DELETE',\n} as const;\n","import { z } from \"zod\";\nimport type { ContractInstance } from \"./contract-instance\";\nimport { HttpMethod } from \"./http-methods\";\nimport { PaginationQuerySchema, DataResponseSchema } from \"./pagination\";\nimport { NotFoundResponseSchema } from \"./error.schema\";\n\nexport function createCrudEndpoints<\n TEntity extends z.ZodTypeAny,\n TCreate extends z.ZodTypeAny,\n TUpdate extends z.ZodTypeAny,\n>(\n c: ContractInstance,\n resource: string,\n schemas: { entity: TEntity; create: TCreate; update: TUpdate },\n plural?: string,\n) {\n const base = plural ?? `${resource}s`;\n\n return {\n list: {\n method: HttpMethod.GET,\n path: `/${base}` as const,\n query: PaginationQuerySchema,\n responses: { 200: DataResponseSchema(schemas.entity) },\n summary: `List all ${base}`,\n },\n findById: {\n method: HttpMethod.GET,\n path: `/${base}/:id` as const,\n responses: { 200: schemas.entity, 404: NotFoundResponseSchema },\n summary: `Find ${resource} by ID`,\n },\n create: {\n method: HttpMethod.POST,\n path: `/${base}` as const,\n body: schemas.create,\n responses: { 201: schemas.entity },\n summary: `Create a new ${resource}`,\n },\n update: {\n method: HttpMethod.PUT,\n path: `/${base}/:id` as const,\n body: schemas.update,\n responses: { 200: schemas.entity, 404: NotFoundResponseSchema },\n summary: `Update ${resource} by ID`,\n },\n remove: {\n method: HttpMethod.DELETE,\n path: `/${base}/:id` as const,\n body: c.noBody(),\n responses: { 204: c.noBody(), 404: NotFoundResponseSchema },\n summary: `Delete ${resource} by ID`,\n },\n } as const;\n}\n","import type { PaginationQuery } from \"./pagination\";\nimport type { ICrudService } from \"./crud-service.interface\";\n\nexport function createCrudHandlers<T>(service: ICrudService<T>) {\n return {\n list: async ({ query }: { query: PaginationQuery }) => {\n const data = await service.list(query);\n return { status: 200 as const, body: data };\n },\n findById: async ({ params }: { params: { id: string } }) => {\n const entity = await service.findById(params.id);\n if (!entity)\n return { status: 404 as const, body: { message: \"Not found\" } };\n return { status: 200 as const, body: entity };\n },\n create: async ({ body }: { body: unknown }) => {\n const entity = await service.create(body);\n return { status: 201 as const, body: entity };\n },\n update: async ({\n params,\n body,\n }: {\n params: { id: string };\n body: unknown;\n }) => {\n const entity = await service.update(params.id, body);\n if (!entity)\n return { status: 404 as const, body: { message: \"Not found\" } };\n return { status: 200 as const, body: entity };\n },\n remove: async ({ params }: { params: { id: string } }) => {\n await service.remove(params.id);\n return { status: 204 as const, body: undefined };\n },\n };\n}\n","import { z } from \"zod\";\n\nexport const UserSchema = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n isActive: z.boolean().default(true),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CreateUserSchema = z.object({\n email: z.string().email(),\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n password: z.string().min(8),\n});\n\nexport const UpdateUserSchema = CreateUserSchema.partial()\n .omit({ password: true })\n .extend({\n isActive: z.boolean().optional(),\n });\n\nexport type User = z.infer<typeof UserSchema>;\nexport type CreateUser = z.infer<typeof CreateUserSchema>;\nexport type UpdateUser = z.infer<typeof UpdateUserSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport { UserSchema, CreateUserSchema, UpdateUserSchema } from \"./user.schema\";\n\nconst base = createCrudEndpoints(c, \"user\", {\n entity: UserSchema,\n create: CreateUserSchema,\n update: UpdateUserSchema,\n});\n\nexport const userContract = c.router({\n ...base,\n});\n","import { z } from 'zod';\n\nexport const ProductSchema = z.object({\n id: z.string().uuid(),\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n categoryId: z.string().uuid(),\n unitOfMeasureId: z.string().uuid(),\n taxId: z.string().uuid(),\n isActive: z.boolean().default(true),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CreateProductSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n categoryId: z.string().uuid(),\n unitOfMeasureId: z.string().uuid(),\n taxId: z.string().uuid(),\n});\n\nexport const UpdateProductSchema = CreateProductSchema.partial().extend({\n isActive: z.boolean().optional(),\n});\n\nexport type Product = z.infer<typeof ProductSchema>;\nexport type CreateProduct = z.infer<typeof CreateProductSchema>;\nexport type UpdateProduct = z.infer<typeof UpdateProductSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport {\n ProductSchema,\n CreateProductSchema,\n UpdateProductSchema,\n} from \"./product.schema\";\n\nconst base = createCrudEndpoints(c, \"product\", {\n entity: ProductSchema,\n create: CreateProductSchema,\n update: UpdateProductSchema,\n});\n\nexport const productContract = c.router({\n ...base,\n});\n","import { z } from 'zod';\n\nexport const OrderItemSchema = z.object({\n id: z.string().uuid(),\n orderId: z.string().uuid(),\n productId: z.string().uuid(),\n quantity: z.number().positive(),\n unitPrice: z.number().positive(),\n subtotal: z.number().nonnegative(),\n taxAmount: z.number().nonnegative(),\n total: z.number().nonnegative(),\n});\n\nexport const CreateOrderItemSchema = z.object({\n productId: z.string().uuid(),\n quantity: z.number().positive(),\n unitPrice: z.number().positive(),\n});\n\nexport const OrderStatusSchema = z.enum([\n 'pending',\n 'confirmed',\n 'processing',\n 'shipped',\n 'delivered',\n 'cancelled',\n]);\n\nexport const OrderSchema = z.object({\n id: z.string().uuid(),\n orderNumber: z.string().min(1),\n clientId: z.string().uuid(),\n sellerId: z.string().uuid().optional(),\n status: OrderStatusSchema,\n subtotal: z.number().nonnegative(),\n taxAmount: z.number().nonnegative(),\n discountAmount: z.number().nonnegative().default(0),\n total: z.number().nonnegative(),\n notes: z.string().optional(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n items: z.array(OrderItemSchema).optional(),\n});\n\nexport const CreateOrderSchema = z.object({\n clientId: z.string().uuid(),\n sellerId: z.string().uuid().optional(),\n notes: z.string().optional(),\n items: z.array(CreateOrderItemSchema).min(1),\n});\n\nexport const UpdateOrderStatusSchema = z.object({\n status: OrderStatusSchema,\n});\n\nexport type OrderItem = z.infer<typeof OrderItemSchema>;\nexport type CreateOrderItem = z.infer<typeof CreateOrderItemSchema>;\nexport type Order = z.infer<typeof OrderSchema>;\nexport type CreateOrder = z.infer<typeof CreateOrderSchema>;\nexport type UpdateOrderStatus = z.infer<typeof UpdateOrderStatusSchema>;\nexport type OrderStatus = z.infer<typeof OrderStatusSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport {\n OrderSchema,\n CreateOrderSchema,\n UpdateOrderStatusSchema,\n} from \"./order.schema\";\n\nconst base = createCrudEndpoints(c, \"order\", {\n entity: OrderSchema,\n create: CreateOrderSchema,\n update: UpdateOrderStatusSchema,\n});\n\nexport const orderContract = c.router({\n ...base,\n});\n"],"mappings":"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","names":["z","z","z","c","base","z","z","base","z","base"]}
1
+ {"version":3,"sources":["../src/common/pagination.ts","../src/common/error.schema.ts","../src/common/api-response.ts","../src/common/contract-instance.ts","../src/common/http-methods.ts","../src/common/crud-factory.ts","../src/common/crud-handler.ts","../src/user/user.schema.ts","../src/user/user.contract.ts","../src/product/product.schema.ts","../src/product/product.contract.ts","../src/order/order.schema.ts","../src/order/order.contract.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const PaginationQuerySchema = z.object({\n page: z.coerce.number().int().positive().default(1),\n pageSize: z.coerce.number().int().positive().max(100).default(20),\n sortBy: z.string().optional(),\n sortOrder: z.enum([\"asc\", \"desc\"]).default(\"desc\"),\n});\n\nexport type PaginationQuery = z.infer<typeof PaginationQuerySchema>;\n\nexport const PaginationSchema = z.object({\n page: z.number(),\n pageSize: z.number(),\n total: z.number(),\n totalPages: z.number(),\n hasNext: z.boolean(),\n hasPrev: z.boolean(),\n});\n\nexport type Pagination = z.infer<typeof PaginationSchema>;\n\nexport const DataResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>\n z.object({\n data: z.array(itemSchema),\n pagination: PaginationSchema,\n });\n\nexport type DataResponse<T> = {\n data: T[];\n pagination: Pagination;\n};\n","import { z } from \"zod\";\n\nexport const ErrorResponseSchema = z.object({\n message: z.string(),\n statusCode: z.number(),\n error: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\nexport const NotFoundResponseSchema = z.object({\n message: z.string(),\n});\n\nexport const ValidationErrorSchema = z.object({\n message: z.string(),\n statusCode: z.number().default(400),\n error: z.string().default(\"Bad Request\"),\n details: z.array(\n z.object({\n field: z.string(),\n message: z.string(),\n }),\n ),\n});\n\nexport type ValidationError = z.infer<typeof ValidationErrorSchema>;\n","import { z } from \"zod\";\nimport { DataResponseSchema } from \"./pagination\";\n\nexport const ApiSuccessResponseSchema = <T extends z.ZodTypeAny>(\n dataSchema: T,\n) =>\n z.object({\n success: z.literal(true),\n data: dataSchema,\n });\n\nexport const ApiErrorResponseSchema = z.object({\n success: z.literal(false),\n message: z.string(),\n statusCode: z.number(),\n error: z.string().optional(),\n});\n\nexport const ApiPaginatedResponseSchema = <T extends z.ZodTypeAny>(\n itemSchema: T,\n) =>\n z.object({\n success: z.literal(true),\n ...DataResponseSchema(itemSchema).shape,\n });\n","import { initContract } from \"@ts-rest/core\";\n\nexport type ContractInstance = ReturnType<typeof initContract>;\n\nexport const c: ContractInstance = initContract();\n","export const HttpMethod = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n PATCH: 'PATCH',\n DELETE: 'DELETE',\n} as const;\n","import { z } from \"zod\";\nimport type { ContractInstance } from \"./contract-instance\";\nimport { HttpMethod } from \"./http-methods\";\nimport { PaginationQuerySchema, DataResponseSchema } from \"./pagination\";\nimport { NotFoundResponseSchema } from \"./error.schema\";\n\nexport function createCrudEndpoints<\n TEntity extends z.ZodTypeAny,\n TCreate extends z.ZodTypeAny,\n TUpdate extends z.ZodTypeAny,\n>(\n c: ContractInstance,\n resource: string,\n schemas: { entity: TEntity; create: TCreate; update: TUpdate },\n plural?: string,\n) {\n const base = plural ?? `${resource}s`;\n\n return {\n list: {\n method: HttpMethod.GET,\n path: `/${base}` as const,\n query: PaginationQuerySchema,\n responses: { 200: DataResponseSchema(schemas.entity) },\n summary: `List all ${base}`,\n },\n findById: {\n method: HttpMethod.GET,\n path: `/${base}/:id` as const,\n responses: { 200: schemas.entity, 404: NotFoundResponseSchema },\n summary: `Find ${resource} by ID`,\n },\n create: {\n method: HttpMethod.POST,\n path: `/${base}` as const,\n body: schemas.create,\n responses: { 201: schemas.entity },\n summary: `Create a new ${resource}`,\n },\n update: {\n method: HttpMethod.PUT,\n path: `/${base}/:id` as const,\n body: schemas.update,\n responses: { 200: schemas.entity, 404: NotFoundResponseSchema },\n summary: `Update ${resource} by ID`,\n },\n remove: {\n method: HttpMethod.DELETE,\n path: `/${base}/:id` as const,\n body: c.noBody(),\n responses: { 204: c.noBody(), 404: NotFoundResponseSchema },\n summary: `Delete ${resource} by ID`,\n },\n } as const;\n}\n","import type { PaginationQuery } from \"./pagination\";\nimport type { ICrudService } from \"./crud-interface\";\n\nexport function createCrudHandlers<TData, TCreate, TUpdate>(\n service: ICrudService<TData, TCreate, TUpdate>,\n) {\n return {\n list: async (query: PaginationQuery) => {\n const data = await service.list(query);\n return { status: 200 as const, body: data };\n },\n findById: async (id: string) => {\n const entity = await service.findById(id);\n if (!entity)\n return { status: 404 as const, body: { message: \"Not found\" } };\n return { status: 200 as const, body: entity };\n },\n create: async (data: TCreate) => {\n const entity = await service.create(data);\n return { status: 201 as const, body: entity };\n },\n update: async (id: string, data: TUpdate) => {\n const entity = await service.update(id, data);\n if (!entity)\n return { status: 404 as const, body: { message: \"Not found\" } };\n return { status: 200 as const, body: entity };\n },\n remove: async (id: string) => {\n await service.remove(id);\n return { status: 204 as const, body: undefined };\n },\n };\n}\n","import { z } from \"zod\";\n\nexport const UserSchema = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n isActive: z.boolean().default(true),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CreateUserSchema = z.object({\n email: z.string().email(),\n firstName: z.string().min(1),\n lastName: z.string().min(1),\n password: z.string().min(8),\n});\n\nexport const UpdateUserSchema = CreateUserSchema.partial()\n .omit({ password: true })\n .extend({\n isActive: z.boolean().optional(),\n });\n\nexport type User = z.infer<typeof UserSchema>;\nexport type CreateUser = z.infer<typeof CreateUserSchema>;\nexport type UpdateUser = z.infer<typeof UpdateUserSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport { UserSchema, CreateUserSchema, UpdateUserSchema } from \"./user.schema\";\n\nconst base = createCrudEndpoints(c, \"user\", {\n entity: UserSchema,\n create: CreateUserSchema,\n update: UpdateUserSchema,\n});\n\nexport const userContract = c.router({\n ...base,\n});\n","import { z } from 'zod';\n\nexport const ProductSchema = z.object({\n id: z.string().uuid(),\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n categoryId: z.string().uuid(),\n unitOfMeasureId: z.string().uuid(),\n taxId: z.string().uuid(),\n isActive: z.boolean().default(true),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const CreateProductSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n categoryId: z.string().uuid(),\n unitOfMeasureId: z.string().uuid(),\n taxId: z.string().uuid(),\n});\n\nexport const UpdateProductSchema = CreateProductSchema.partial().extend({\n isActive: z.boolean().optional(),\n});\n\nexport type Product = z.infer<typeof ProductSchema>;\nexport type CreateProduct = z.infer<typeof CreateProductSchema>;\nexport type UpdateProduct = z.infer<typeof UpdateProductSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport {\n ProductSchema,\n CreateProductSchema,\n UpdateProductSchema,\n} from \"./product.schema\";\n\nconst base = createCrudEndpoints(c, \"product\", {\n entity: ProductSchema,\n create: CreateProductSchema,\n update: UpdateProductSchema,\n});\n\nexport const productContract = c.router({\n ...base,\n});\n","import { z } from 'zod';\n\nexport const OrderItemSchema = z.object({\n id: z.string().uuid(),\n orderId: z.string().uuid(),\n productId: z.string().uuid(),\n quantity: z.number().positive(),\n unitPrice: z.number().positive(),\n subtotal: z.number().nonnegative(),\n taxAmount: z.number().nonnegative(),\n total: z.number().nonnegative(),\n});\n\nexport const CreateOrderItemSchema = z.object({\n productId: z.string().uuid(),\n quantity: z.number().positive(),\n unitPrice: z.number().positive(),\n});\n\nexport const OrderStatusSchema = z.enum([\n 'pending',\n 'confirmed',\n 'processing',\n 'shipped',\n 'delivered',\n 'cancelled',\n]);\n\nexport const OrderSchema = z.object({\n id: z.string().uuid(),\n orderNumber: z.string().min(1),\n clientId: z.string().uuid(),\n sellerId: z.string().uuid().optional(),\n status: OrderStatusSchema,\n subtotal: z.number().nonnegative(),\n taxAmount: z.number().nonnegative(),\n discountAmount: z.number().nonnegative().default(0),\n total: z.number().nonnegative(),\n notes: z.string().optional(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n items: z.array(OrderItemSchema).optional(),\n});\n\nexport const CreateOrderSchema = z.object({\n clientId: z.string().uuid(),\n sellerId: z.string().uuid().optional(),\n notes: z.string().optional(),\n items: z.array(CreateOrderItemSchema).min(1),\n});\n\nexport const UpdateOrderStatusSchema = z.object({\n status: OrderStatusSchema,\n});\n\nexport type OrderItem = z.infer<typeof OrderItemSchema>;\nexport type CreateOrderItem = z.infer<typeof CreateOrderItemSchema>;\nexport type Order = z.infer<typeof OrderSchema>;\nexport type CreateOrder = z.infer<typeof CreateOrderSchema>;\nexport type UpdateOrderStatus = z.infer<typeof UpdateOrderStatusSchema>;\nexport type OrderStatus = z.infer<typeof OrderStatusSchema>;\n","import { c, createCrudEndpoints } from \"../common\";\nimport {\n OrderSchema,\n CreateOrderSchema,\n UpdateOrderStatusSchema,\n} from \"./order.schema\";\n\nconst base = createCrudEndpoints(c, \"order\", {\n entity: OrderSchema,\n create: CreateOrderSchema,\n update: UpdateOrderStatusSchema,\n});\n\nexport const orderContract = c.router({\n ...base,\n});\n"],"mappings":"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","names":["z","z","z","c","base","z","z","base","z","base"]}
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@ventori/contracts",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "private": false,
5
5
  "description": "Shared contracts for Ventori ERP — ts-rest routers, Zod schemas, and inferred types",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "main": "dist/index.mjs",
7
+ "types": "dist/index.d.mts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.mts",
11
+ "import": "./dist/index.mjs",
12
+ "default": "./dist/index.mjs"
13
+ }
14
+ },
8
15
  "dependencies": {
9
16
  "@ts-rest/core": "^3.52.0",
10
- "zod": "^3.24.0"
17
+ "zod": "^4.4.3"
11
18
  },
12
19
  "devDependencies": {
13
20
  "tsup": "^8.5.1",