@middlewr/contracts 0.0.27 → 0.0.29

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/cjs/index.js CHANGED
@@ -49,6 +49,8 @@ __export(index_exports, {
49
49
  MemberIdParamSchema: () => MemberIdParamSchema,
50
50
  PaginatedLinksSchema: () => PaginatedLinksSchema,
51
51
  QrCodeSettingsSchema: () => QrCodeSettingsSchema,
52
+ RuleGraphNodeSchema: () => RuleGraphNodeSchema,
53
+ RuleGraphSchema: () => RuleGraphSchema,
52
54
  SignInInputSchema: () => SignInInputSchema,
53
55
  TagIdParamSchema: () => TagIdParamSchema,
54
56
  TagSchema: () => TagSchema,
@@ -83,7 +85,7 @@ __export(index_exports, {
83
85
  });
84
86
  module.exports = __toCommonJS(index_exports);
85
87
  var import_contract = require("@orpc/contract");
86
- var import_zod10 = require("zod");
88
+ var import_zod11 = require("zod");
87
89
 
88
90
  // src/analytics.schema.ts
89
91
  var import_zod = require("zod");
@@ -227,234 +229,325 @@ var UpdateDomainInputSchema = import_zod5.z.object({
227
229
  });
228
230
 
229
231
  // src/links.schema.ts
230
- var import_zod7 = require("zod");
232
+ var import_zod8 = require("zod");
231
233
 
232
- // src/tags.schema.ts
234
+ // src/rules.schema.ts
233
235
  var import_zod6 = require("zod");
234
- var TagSchema = import_zod6.z.object({
235
- id: import_zod6.z.string().uuid(),
236
- workspace_id: import_zod6.z.string().uuid(),
237
- name: import_zod6.z.string(),
238
- color: import_zod6.z.string().nullable(),
239
- created_at: import_zod6.z.coerce.date(),
240
- updated_at: import_zod6.z.coerce.date().nullable()
241
- });
242
- var CreateTagInputSchema = import_zod6.z.object({
243
- name: import_zod6.z.string().min(1).max(50),
244
- color: import_zod6.z.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
245
- });
246
- var UpdateTagInputSchema = import_zod6.z.object({
247
- name: import_zod6.z.string().min(1).max(50).optional(),
248
- color: import_zod6.z.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
236
+ var RULE_OPERATORS = ["eq", "neq", "in", "not_in", "contains", "not_contains", "gt", "lt", "gte", "lte", "regex"];
237
+ var VALID_FIELD_PREFIXES = ["cf.", "request.", "edge.", "time."];
238
+ var PositionSchema = import_zod6.z.object({
239
+ x: import_zod6.z.number(),
240
+ y: import_zod6.z.number()
241
+ });
242
+ var ConditionNodeSchema = import_zod6.z.object({
243
+ id: import_zod6.z.string(),
244
+ type: import_zod6.z.literal("condition"),
245
+ position: PositionSchema,
246
+ field: import_zod6.z.string().refine((f) => VALID_FIELD_PREFIXES.some((p) => f.startsWith(p)), {
247
+ message: "Field must start with cf., request., edge., or time."
248
+ }),
249
+ operator: import_zod6.z.enum(RULE_OPERATORS),
250
+ value: import_zod6.z.union([import_zod6.z.string(), import_zod6.z.array(import_zod6.z.string()), import_zod6.z.number()]),
251
+ outputs: import_zod6.z.object({
252
+ true: import_zod6.z.string().nullable(),
253
+ false: import_zod6.z.string().nullable()
254
+ })
255
+ });
256
+ var SplitNodeSchema = import_zod6.z.object({
257
+ id: import_zod6.z.string(),
258
+ type: import_zod6.z.literal("split"),
259
+ position: PositionSchema,
260
+ variants: import_zod6.z.array(
261
+ import_zod6.z.object({
262
+ weight: import_zod6.z.number().min(1).max(100),
263
+ target: import_zod6.z.string().nullable()
264
+ })
265
+ ).min(2)
266
+ });
267
+ var DestinationNodeSchema = import_zod6.z.object({
268
+ id: import_zod6.z.string(),
269
+ type: import_zod6.z.literal("destination"),
270
+ position: PositionSchema,
271
+ url: import_zod6.z.string().url()
272
+ });
273
+ var FORBIDDEN_HEADERS = ["set-cookie", "authorization", "host", "transfer-encoding"];
274
+ var TransformNodeSchema = import_zod6.z.object({
275
+ id: import_zod6.z.string(),
276
+ type: import_zod6.z.literal("transform"),
277
+ position: PositionSchema,
278
+ transforms: import_zod6.z.object({
279
+ query_params: import_zod6.z.array(
280
+ import_zod6.z.object({
281
+ key: import_zod6.z.string().min(1),
282
+ value: import_zod6.z.string(),
283
+ mode: import_zod6.z.enum(["set", "append"])
284
+ })
285
+ ).optional(),
286
+ redirect_status: import_zod6.z.union([import_zod6.z.literal(301), import_zod6.z.literal(302), import_zod6.z.literal(307), import_zod6.z.literal(308)]).optional(),
287
+ response_headers: import_zod6.z.array(
288
+ import_zod6.z.object({
289
+ key: import_zod6.z.string().min(1).refine((k) => !FORBIDDEN_HEADERS.includes(k.toLowerCase()), {
290
+ message: "This header is not allowed"
291
+ }),
292
+ value: import_zod6.z.string().regex(/^[^\r\n]*$/, "Header value must not contain newlines"),
293
+ mode: import_zod6.z.enum(["set", "append"])
294
+ })
295
+ ).optional()
296
+ }),
297
+ next: import_zod6.z.string().nullable()
298
+ });
299
+ var RuleGraphNodeSchema = import_zod6.z.discriminatedUnion("type", [
300
+ ConditionNodeSchema,
301
+ SplitNodeSchema,
302
+ DestinationNodeSchema,
303
+ TransformNodeSchema
304
+ ]);
305
+ var RuleGraphSchema = import_zod6.z.object({
306
+ entry: import_zod6.z.string(),
307
+ nodes: import_zod6.z.record(import_zod6.z.string(), RuleGraphNodeSchema)
308
+ }).refine((data) => data.nodes[data.entry] !== void 0, {
309
+ message: "Entry node must reference an existing node in the graph",
310
+ path: ["entry"]
311
+ }).nullable();
312
+
313
+ // src/tags.schema.ts
314
+ var import_zod7 = require("zod");
315
+ var TagSchema = import_zod7.z.object({
316
+ id: import_zod7.z.string().uuid(),
317
+ workspace_id: import_zod7.z.string().uuid(),
318
+ name: import_zod7.z.string(),
319
+ color: import_zod7.z.string().nullable(),
320
+ created_at: import_zod7.z.coerce.date(),
321
+ updated_at: import_zod7.z.coerce.date().nullable()
322
+ });
323
+ var CreateTagInputSchema = import_zod7.z.object({
324
+ name: import_zod7.z.string().min(1).max(50),
325
+ color: import_zod7.z.string().regex(/^#[0-9A-Fa-f]{6}$/).optional()
326
+ });
327
+ var UpdateTagInputSchema = import_zod7.z.object({
328
+ name: import_zod7.z.string().min(1).max(50).optional(),
329
+ color: import_zod7.z.string().regex(/^#[0-9A-Fa-f]{6}$/).nullable().optional()
249
330
  });
250
331
 
251
332
  // src/links.schema.ts
252
- var DotStyleSchema = import_zod7.z.enum(["square", "dots", "rounded", "classy", "classy-rounded", "extra-rounded"]);
253
- var EyeOuterStyleSchema = import_zod7.z.enum(["square", "dot", "extra-rounded"]);
254
- var EyeInnerStyleSchema = import_zod7.z.enum(["square", "dot"]);
255
- var QrCodeSettingsSchema = import_zod7.z.object({
256
- fg_color: import_zod7.z.string().max(20),
257
- bg_color: import_zod7.z.string().max(20),
333
+ var DotStyleSchema = import_zod8.z.enum(["square", "dots", "rounded", "classy", "classy-rounded", "extra-rounded"]);
334
+ var EyeOuterStyleSchema = import_zod8.z.enum(["square", "dot", "extra-rounded"]);
335
+ var EyeInnerStyleSchema = import_zod8.z.enum(["square", "dot"]);
336
+ var QrCodeSettingsSchema = import_zod8.z.object({
337
+ fg_color: import_zod8.z.string().max(20),
338
+ bg_color: import_zod8.z.string().max(20),
258
339
  dot_style: DotStyleSchema,
259
340
  eye_outer_style: EyeOuterStyleSchema,
260
341
  eye_inner_style: EyeInnerStyleSchema,
261
- frame_enabled: import_zod7.z.boolean(),
262
- frame_text: import_zod7.z.string().max(255),
263
- frame_color: import_zod7.z.string().max(20),
264
- frame_text_color: import_zod7.z.string().max(20)
342
+ frame_enabled: import_zod8.z.boolean(),
343
+ frame_text: import_zod8.z.string().max(255),
344
+ frame_color: import_zod8.z.string().max(20),
345
+ frame_text_color: import_zod8.z.string().max(20)
265
346
  });
266
- var LinkSchema = import_zod7.z.object({
267
- id: import_zod7.z.string().uuid(),
268
- workspace_id: import_zod7.z.string().uuid(),
269
- domain_id: import_zod7.z.string().uuid(),
270
- created_by_id: import_zod7.z.string().uuid(),
271
- original_url: import_zod7.z.string().url(),
272
- short_code: import_zod7.z.string(),
273
- title: import_zod7.z.string().nullable(),
274
- description: import_zod7.z.string().nullable(),
275
- utm_source: import_zod7.z.string().nullable(),
276
- utm_medium: import_zod7.z.string().nullable(),
277
- utm_campaign: import_zod7.z.string().nullable(),
278
- utm_term: import_zod7.z.string().nullable(),
279
- utm_content: import_zod7.z.string().nullable(),
280
- password: import_zod7.z.string().nullable(),
281
- starts_at: import_zod7.z.coerce.date().nullable(),
282
- expires_at: import_zod7.z.coerce.date().nullable(),
283
- fallback_url: import_zod7.z.string().nullable(),
284
- is_active: import_zod7.z.boolean(),
285
- redirect_type: import_zod7.z.number().int(),
286
- click_count: import_zod7.z.coerce.number().int(),
287
- click_count_updated_at: import_zod7.z.coerce.date().nullable(),
288
- created_at: import_zod7.z.coerce.date(),
289
- updated_at: import_zod7.z.coerce.date().nullable(),
347
+ var LinkSchema = import_zod8.z.object({
348
+ id: import_zod8.z.string().uuid(),
349
+ workspace_id: import_zod8.z.string().uuid(),
350
+ domain_id: import_zod8.z.string().uuid(),
351
+ created_by_id: import_zod8.z.string().uuid(),
352
+ original_url: import_zod8.z.string().url(),
353
+ short_code: import_zod8.z.string(),
354
+ title: import_zod8.z.string().nullable(),
355
+ description: import_zod8.z.string().nullable(),
356
+ utm_source: import_zod8.z.string().nullable(),
357
+ utm_medium: import_zod8.z.string().nullable(),
358
+ utm_campaign: import_zod8.z.string().nullable(),
359
+ utm_term: import_zod8.z.string().nullable(),
360
+ utm_content: import_zod8.z.string().nullable(),
361
+ password: import_zod8.z.string().nullable(),
362
+ starts_at: import_zod8.z.coerce.date().nullable(),
363
+ expires_at: import_zod8.z.coerce.date().nullable(),
364
+ fallback_url: import_zod8.z.string().nullable(),
365
+ is_active: import_zod8.z.boolean(),
366
+ redirect_type: import_zod8.z.number().int(),
367
+ click_count: import_zod8.z.coerce.number().int(),
368
+ click_count_updated_at: import_zod8.z.coerce.date().nullable(),
369
+ created_at: import_zod8.z.coerce.date(),
370
+ updated_at: import_zod8.z.coerce.date().nullable(),
290
371
  qr_code_settings: QrCodeSettingsSchema.nullable(),
291
- tags: import_zod7.z.array(TagSchema)
292
- });
293
- var CreateLinkInputSchema = import_zod7.z.object({
294
- original_url: import_zod7.z.string().url().max(2048),
295
- domain_id: import_zod7.z.string().uuid().optional(),
296
- short_code: import_zod7.z.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
297
- title: import_zod7.z.string().max(255).optional(),
298
- description: import_zod7.z.string().max(2e3).optional(),
299
- utm_source: import_zod7.z.string().max(255).optional(),
300
- utm_medium: import_zod7.z.string().max(255).optional(),
301
- utm_campaign: import_zod7.z.string().max(255).optional(),
302
- utm_term: import_zod7.z.string().max(255).optional(),
303
- utm_content: import_zod7.z.string().max(255).optional(),
304
- password: import_zod7.z.string().min(4).max(100).optional(),
305
- starts_at: import_zod7.z.coerce.date().optional(),
306
- expires_at: import_zod7.z.coerce.date().optional(),
307
- fallback_url: import_zod7.z.string().url().max(2048).optional(),
308
- redirect_type: import_zod7.z.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
372
+ link_type: import_zod8.z.enum(["redirect", "rules"]).default("redirect"),
373
+ rule_graph: RuleGraphSchema.optional(),
374
+ tags: import_zod8.z.array(TagSchema)
375
+ });
376
+ var CreateLinkInputSchema = import_zod8.z.object({
377
+ original_url: import_zod8.z.string().url().max(2048),
378
+ domain_id: import_zod8.z.string().uuid().optional(),
379
+ short_code: import_zod8.z.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
380
+ title: import_zod8.z.string().max(255).optional(),
381
+ description: import_zod8.z.string().max(2e3).optional(),
382
+ utm_source: import_zod8.z.string().max(255).optional(),
383
+ utm_medium: import_zod8.z.string().max(255).optional(),
384
+ utm_campaign: import_zod8.z.string().max(255).optional(),
385
+ utm_term: import_zod8.z.string().max(255).optional(),
386
+ utm_content: import_zod8.z.string().max(255).optional(),
387
+ password: import_zod8.z.string().min(4).max(100).optional(),
388
+ starts_at: import_zod8.z.coerce.date().optional(),
389
+ expires_at: import_zod8.z.coerce.date().optional(),
390
+ fallback_url: import_zod8.z.string().url().max(2048).optional(),
391
+ redirect_type: import_zod8.z.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
309
392
  qr_code_settings: QrCodeSettingsSchema.nullable().optional(),
310
- tag_ids: import_zod7.z.array(import_zod7.z.string().uuid()).optional()
311
- });
312
- var UpdateLinkInputSchema = import_zod7.z.object({
313
- original_url: import_zod7.z.string().url().max(2048).optional(),
314
- domain_id: import_zod7.z.string().uuid().optional(),
315
- short_code: import_zod7.z.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
316
- title: import_zod7.z.string().max(255).nullable().optional(),
317
- description: import_zod7.z.string().max(2e3).nullable().optional(),
318
- utm_source: import_zod7.z.string().max(255).nullable().optional(),
319
- utm_medium: import_zod7.z.string().max(255).nullable().optional(),
320
- utm_campaign: import_zod7.z.string().max(255).nullable().optional(),
321
- utm_term: import_zod7.z.string().max(255).nullable().optional(),
322
- utm_content: import_zod7.z.string().max(255).nullable().optional(),
323
- password: import_zod7.z.string().min(4).max(100).nullable().optional(),
324
- starts_at: import_zod7.z.coerce.date().nullable().optional(),
325
- expires_at: import_zod7.z.coerce.date().nullable().optional(),
326
- fallback_url: import_zod7.z.string().url().max(2048).nullable().optional(),
327
- is_active: import_zod7.z.boolean().optional(),
328
- redirect_type: import_zod7.z.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
393
+ tag_ids: import_zod8.z.array(import_zod8.z.string().uuid()).optional(),
394
+ link_type: import_zod8.z.enum(["redirect", "rules"]).optional(),
395
+ rule_graph: RuleGraphSchema.optional()
396
+ }).refine((data) => data.link_type !== "rules" || data.rule_graph != null, {
397
+ message: 'rule_graph is required when link_type is "rules"',
398
+ path: ["rule_graph"]
399
+ });
400
+ var UpdateLinkInputSchema = import_zod8.z.object({
401
+ original_url: import_zod8.z.string().url().max(2048).optional(),
402
+ domain_id: import_zod8.z.string().uuid().optional(),
403
+ short_code: import_zod8.z.string().min(3).max(50).regex(/^[a-zA-Z0-9-]+$/).optional(),
404
+ title: import_zod8.z.string().max(255).nullable().optional(),
405
+ description: import_zod8.z.string().max(2e3).nullable().optional(),
406
+ utm_source: import_zod8.z.string().max(255).nullable().optional(),
407
+ utm_medium: import_zod8.z.string().max(255).nullable().optional(),
408
+ utm_campaign: import_zod8.z.string().max(255).nullable().optional(),
409
+ utm_term: import_zod8.z.string().max(255).nullable().optional(),
410
+ utm_content: import_zod8.z.string().max(255).nullable().optional(),
411
+ password: import_zod8.z.string().min(4).max(100).nullable().optional(),
412
+ starts_at: import_zod8.z.coerce.date().nullable().optional(),
413
+ expires_at: import_zod8.z.coerce.date().nullable().optional(),
414
+ fallback_url: import_zod8.z.string().url().max(2048).nullable().optional(),
415
+ is_active: import_zod8.z.boolean().optional(),
416
+ redirect_type: import_zod8.z.coerce.number().refine((v) => [301, 302, 307, 308].includes(v)).optional(),
329
417
  qr_code_settings: QrCodeSettingsSchema.nullable().optional(),
330
- tag_ids: import_zod7.z.array(import_zod7.z.string().uuid()).optional()
331
- });
332
- var stringToBoolean = import_zod7.z.union([import_zod7.z.boolean(), import_zod7.z.enum(["true", "false"])]).transform((val) => typeof val === "string" ? val === "true" : val);
333
- var LinkFiltersSchema = import_zod7.z.object({
334
- search: import_zod7.z.string().optional(),
335
- domain_ids: import_zod7.z.array(import_zod7.z.string().uuid()).optional(),
418
+ tag_ids: import_zod8.z.array(import_zod8.z.string().uuid()).optional(),
419
+ link_type: import_zod8.z.enum(["redirect", "rules"]).optional(),
420
+ rule_graph: RuleGraphSchema.optional()
421
+ }).refine((data) => data.link_type !== "rules" || data.rule_graph != null, {
422
+ message: 'rule_graph is required when link_type is "rules"',
423
+ path: ["rule_graph"]
424
+ });
425
+ var stringToBoolean = import_zod8.z.union([import_zod8.z.boolean(), import_zod8.z.enum(["true", "false"])]).transform((val) => typeof val === "string" ? val === "true" : val);
426
+ var LinkFiltersSchema = import_zod8.z.object({
427
+ search: import_zod8.z.string().optional(),
428
+ domain_ids: import_zod8.z.array(import_zod8.z.string().uuid()).optional(),
336
429
  is_active: stringToBoolean.optional(),
337
430
  has_expiration: stringToBoolean.optional(),
338
431
  expired: stringToBoolean.optional(),
339
- created_from: import_zod7.z.coerce.date().optional(),
340
- created_to: import_zod7.z.coerce.date().optional(),
341
- expires_from: import_zod7.z.coerce.date().optional(),
342
- expires_to: import_zod7.z.coerce.date().optional(),
343
- tag_ids: import_zod7.z.array(import_zod7.z.string().uuid()).optional(),
344
- sort_by: import_zod7.z.enum(["created_at", "title", "click_count", "original_url"]).default("created_at"),
345
- sort_order: import_zod7.z.enum(["asc", "desc"]).default("desc"),
346
- page: import_zod7.z.coerce.number().int().min(1).default(1),
347
- per_page: import_zod7.z.coerce.number().int().min(1).max(100).default(20)
348
- });
349
- var PaginatedLinksSchema = import_zod7.z.object({
350
- links: import_zod7.z.array(LinkSchema),
351
- total: import_zod7.z.number().int(),
352
- page: import_zod7.z.number().int(),
353
- per_page: import_zod7.z.number().int(),
354
- total_pages: import_zod7.z.number().int()
355
- });
356
- var LinkJobSchema = import_zod7.z.object({
357
- id: import_zod7.z.string().uuid(),
358
- workspace_id: import_zod7.z.string().uuid(),
359
- type: import_zod7.z.string(),
360
- status: import_zod7.z.enum(["pending", "processing", "completed", "failed"]),
361
- total_rows: import_zod7.z.number().int(),
362
- succeeded_count: import_zod7.z.number().int(),
363
- failed_count: import_zod7.z.number().int(),
364
- error: import_zod7.z.string().nullable(),
365
- created_by_id: import_zod7.z.string().uuid(),
366
- created_at: import_zod7.z.date(),
367
- completed_at: import_zod7.z.date().nullable()
368
- });
369
- var LinkJobIdParamSchema = import_zod7.z.object({
370
- workspace_id: import_zod7.z.string().uuid(),
371
- job_id: import_zod7.z.string().uuid()
372
- });
373
-
374
- // src/users.schema.ts
375
- var import_zod8 = require("zod");
376
- var UserSchema = import_zod8.z.object({
432
+ created_from: import_zod8.z.coerce.date().optional(),
433
+ created_to: import_zod8.z.coerce.date().optional(),
434
+ expires_from: import_zod8.z.coerce.date().optional(),
435
+ expires_to: import_zod8.z.coerce.date().optional(),
436
+ tag_ids: import_zod8.z.array(import_zod8.z.string().uuid()).optional(),
437
+ sort_by: import_zod8.z.enum(["created_at", "title", "click_count", "original_url"]).default("created_at"),
438
+ sort_order: import_zod8.z.enum(["asc", "desc"]).default("desc"),
439
+ page: import_zod8.z.coerce.number().int().min(1).default(1),
440
+ per_page: import_zod8.z.coerce.number().int().min(1).max(100).default(20)
441
+ });
442
+ var PaginatedLinksSchema = import_zod8.z.object({
443
+ links: import_zod8.z.array(LinkSchema),
444
+ total: import_zod8.z.number().int(),
445
+ page: import_zod8.z.number().int(),
446
+ per_page: import_zod8.z.number().int(),
447
+ total_pages: import_zod8.z.number().int()
448
+ });
449
+ var LinkJobSchema = import_zod8.z.object({
377
450
  id: import_zod8.z.string().uuid(),
378
- external_id: import_zod8.z.string(),
379
- email: import_zod8.z.string().email(),
380
- email_verified_at: import_zod8.z.coerce.date().nullable(),
381
- first_name: import_zod8.z.string().nullable(),
382
- last_name: import_zod8.z.string().nullable(),
383
- created_at: import_zod8.z.coerce.date(),
384
- updated_at: import_zod8.z.coerce.date().nullable()
385
- });
386
- var SignInInputSchema = import_zod8.z.object({
387
- first_name: import_zod8.z.string().min(1).max(100).optional(),
388
- last_name: import_zod8.z.string().min(1).max(100).optional()
389
- });
390
- var UpdateUserInputSchema = import_zod8.z.object({
391
- first_name: import_zod8.z.string().min(1).max(100).optional(),
392
- last_name: import_zod8.z.string().min(1).max(100).optional()
451
+ workspace_id: import_zod8.z.string().uuid(),
452
+ type: import_zod8.z.string(),
453
+ status: import_zod8.z.enum(["pending", "processing", "completed", "failed"]),
454
+ total_rows: import_zod8.z.number().int(),
455
+ succeeded_count: import_zod8.z.number().int(),
456
+ failed_count: import_zod8.z.number().int(),
457
+ error: import_zod8.z.string().nullable(),
458
+ created_by_id: import_zod8.z.string().uuid(),
459
+ created_at: import_zod8.z.date(),
460
+ completed_at: import_zod8.z.date().nullable()
461
+ });
462
+ var LinkJobIdParamSchema = import_zod8.z.object({
463
+ workspace_id: import_zod8.z.string().uuid(),
464
+ job_id: import_zod8.z.string().uuid()
393
465
  });
394
466
 
395
- // src/workspaces.schema.ts
467
+ // src/users.schema.ts
396
468
  var import_zod9 = require("zod");
397
- var WorkspaceSchema = import_zod9.z.object({
469
+ var UserSchema = import_zod9.z.object({
398
470
  id: import_zod9.z.string().uuid(),
399
- name: import_zod9.z.string(),
400
- billing_plan: import_zod9.z.string(),
401
- billing_status: import_zod9.z.string(),
402
- billing_email: import_zod9.z.string().nullable(),
403
- billing_current_period_end: import_zod9.z.coerce.date().nullable(),
404
- billing_cancel_at_period_end: import_zod9.z.boolean(),
471
+ external_id: import_zod9.z.string(),
472
+ email: import_zod9.z.string().email(),
473
+ email_verified_at: import_zod9.z.coerce.date().nullable(),
474
+ first_name: import_zod9.z.string().nullable(),
475
+ last_name: import_zod9.z.string().nullable(),
405
476
  created_at: import_zod9.z.coerce.date(),
406
477
  updated_at: import_zod9.z.coerce.date().nullable()
407
478
  });
408
- var WorkspaceWithCountSchema = WorkspaceSchema.extend({
409
- member_count: import_zod9.z.number().int()
410
- });
411
- var CreateWorkspaceInputSchema = import_zod9.z.object({
412
- name: import_zod9.z.string().min(1).max(100)
479
+ var SignInInputSchema = import_zod9.z.object({
480
+ first_name: import_zod9.z.string().min(1).max(100).optional(),
481
+ last_name: import_zod9.z.string().min(1).max(100).optional()
413
482
  });
414
- var UpdateWorkspaceInputSchema = import_zod9.z.object({
415
- name: import_zod9.z.string().min(1).max(100).optional(),
416
- billing_email: import_zod9.z.string().email().nullish()
483
+ var UpdateUserInputSchema = import_zod9.z.object({
484
+ first_name: import_zod9.z.string().min(1).max(100).optional(),
485
+ last_name: import_zod9.z.string().min(1).max(100).optional()
417
486
  });
418
- var TransferOwnershipInputSchema = import_zod9.z.object({
419
- to_user_id: import_zod9.z.string().uuid()
487
+
488
+ // src/workspaces.schema.ts
489
+ var import_zod10 = require("zod");
490
+ var WorkspaceSchema = import_zod10.z.object({
491
+ id: import_zod10.z.string().uuid(),
492
+ name: import_zod10.z.string(),
493
+ billing_plan: import_zod10.z.string(),
494
+ billing_status: import_zod10.z.string(),
495
+ billing_email: import_zod10.z.string().nullable(),
496
+ billing_current_period_end: import_zod10.z.coerce.date().nullable(),
497
+ billing_cancel_at_period_end: import_zod10.z.boolean(),
498
+ created_at: import_zod10.z.coerce.date(),
499
+ updated_at: import_zod10.z.coerce.date().nullable()
420
500
  });
421
- var WorkspaceMemberUserSchema = import_zod9.z.object({
422
- id: import_zod9.z.string().uuid(),
423
- email: import_zod9.z.string().email(),
424
- first_name: import_zod9.z.string().nullable(),
425
- last_name: import_zod9.z.string().nullable()
501
+ var WorkspaceWithCountSchema = WorkspaceSchema.extend({
502
+ member_count: import_zod10.z.number().int()
426
503
  });
427
- var WorkspaceMemberSchema = import_zod9.z.object({
428
- id: import_zod9.z.string().uuid(),
429
- workspace_id: import_zod9.z.string().uuid(),
430
- user_id: import_zod9.z.string().uuid(),
431
- user: WorkspaceMemberUserSchema,
432
- permissions: import_zod9.z.number().int(),
433
- joined_at: import_zod9.z.coerce.date(),
434
- created_at: import_zod9.z.coerce.date(),
435
- updated_at: import_zod9.z.coerce.date().nullable()
504
+ var CreateWorkspaceInputSchema = import_zod10.z.object({
505
+ name: import_zod10.z.string().min(1).max(100)
436
506
  });
437
- var UpdateMemberInputSchema = import_zod9.z.object({
438
- permissions: import_zod9.z.number().int().min(1)
507
+ var UpdateWorkspaceInputSchema = import_zod10.z.object({
508
+ name: import_zod10.z.string().min(1).max(100).optional(),
509
+ billing_email: import_zod10.z.string().email().nullish()
439
510
  });
440
- var WorkspaceInvitationSchema = import_zod9.z.object({
441
- id: import_zod9.z.string().uuid(),
442
- workspace_id: import_zod9.z.string().uuid(),
443
- email: import_zod9.z.string().email(),
444
- token: import_zod9.z.string(),
445
- permissions: import_zod9.z.number().int(),
446
- invited_by_id: import_zod9.z.string().uuid(),
447
- expires_at: import_zod9.z.coerce.date(),
448
- created_at: import_zod9.z.coerce.date()
511
+ var TransferOwnershipInputSchema = import_zod10.z.object({
512
+ to_user_id: import_zod10.z.string().uuid()
449
513
  });
450
- var CreateInvitationInputSchema = import_zod9.z.object({
451
- email: import_zod9.z.string().email(),
452
- permissions: import_zod9.z.number().int().min(1)
514
+ var WorkspaceMemberUserSchema = import_zod10.z.object({
515
+ id: import_zod10.z.string().uuid(),
516
+ email: import_zod10.z.string().email(),
517
+ first_name: import_zod10.z.string().nullable(),
518
+ last_name: import_zod10.z.string().nullable()
453
519
  });
454
- var WorkspaceRoleSchema = import_zod9.z.object({
455
- name: import_zod9.z.string(),
456
- description: import_zod9.z.string(),
457
- permissions: import_zod9.z.number().int()
520
+ var WorkspaceMemberSchema = import_zod10.z.object({
521
+ id: import_zod10.z.string().uuid(),
522
+ workspace_id: import_zod10.z.string().uuid(),
523
+ user_id: import_zod10.z.string().uuid(),
524
+ user: WorkspaceMemberUserSchema,
525
+ permissions: import_zod10.z.number().int(),
526
+ joined_at: import_zod10.z.coerce.date(),
527
+ created_at: import_zod10.z.coerce.date(),
528
+ updated_at: import_zod10.z.coerce.date().nullable()
529
+ });
530
+ var UpdateMemberInputSchema = import_zod10.z.object({
531
+ permissions: import_zod10.z.number().int().min(1)
532
+ });
533
+ var WorkspaceInvitationSchema = import_zod10.z.object({
534
+ id: import_zod10.z.string().uuid(),
535
+ workspace_id: import_zod10.z.string().uuid(),
536
+ email: import_zod10.z.string().email(),
537
+ token: import_zod10.z.string(),
538
+ permissions: import_zod10.z.number().int(),
539
+ invited_by_id: import_zod10.z.string().uuid(),
540
+ expires_at: import_zod10.z.coerce.date(),
541
+ created_at: import_zod10.z.coerce.date()
542
+ });
543
+ var CreateInvitationInputSchema = import_zod10.z.object({
544
+ email: import_zod10.z.string().email(),
545
+ permissions: import_zod10.z.number().int().min(1)
546
+ });
547
+ var WorkspaceRoleSchema = import_zod10.z.object({
548
+ name: import_zod10.z.string(),
549
+ description: import_zod10.z.string(),
550
+ permissions: import_zod10.z.number().int()
458
551
  });
459
552
 
460
553
  // src/index.ts
@@ -463,32 +556,32 @@ var analyticsContract = {
463
556
  link: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/analytics" }).input(LinkIdParamSchema.merge(AnalyticsQuerySchema)).output(AnalyticsOutputSchema)
464
557
  };
465
558
  var usersContract = {
466
- me: import_contract.oc.route({ method: "GET", path: "/api/users/me" }).output(import_zod10.z.object({ user: UserSchema })),
467
- signIn: import_contract.oc.route({ method: "POST", path: "/api/users" }).input(SignInInputSchema).output(import_zod10.z.object({ user: UserSchema, status: import_zod10.z.enum(["created", "existing"]) })),
468
- update: import_contract.oc.route({ method: "PATCH", path: "/api/users/me" }).input(UpdateUserInputSchema).output(import_zod10.z.object({ user: UserSchema }))
559
+ me: import_contract.oc.route({ method: "GET", path: "/api/users/me" }).output(import_zod11.z.object({ user: UserSchema })),
560
+ signIn: import_contract.oc.route({ method: "POST", path: "/api/users" }).input(SignInInputSchema).output(import_zod11.z.object({ user: UserSchema, status: import_zod11.z.enum(["created", "existing"]) })),
561
+ update: import_contract.oc.route({ method: "PATCH", path: "/api/users/me" }).input(UpdateUserInputSchema).output(import_zod11.z.object({ user: UserSchema }))
469
562
  };
470
563
  var apiKeysContract = {
471
564
  create: import_contract.oc.route({ method: "POST", path: "/api/api-keys" }).input(CreateApiKeyInputSchema).output(CreateApiKeyResponseSchema),
472
- list: import_contract.oc.route({ method: "GET", path: "/api/api-keys" }).output(import_zod10.z.array(ApiKeySchema)),
473
- delete: import_contract.oc.route({ method: "DELETE", path: "/api/api-keys/{api_key_id}" }).input(ApiKeyIdParamSchema).output(import_zod10.z.void())
565
+ list: import_contract.oc.route({ method: "GET", path: "/api/api-keys" }).output(import_zod11.z.array(ApiKeySchema)),
566
+ delete: import_contract.oc.route({ method: "DELETE", path: "/api/api-keys/{api_key_id}" }).input(ApiKeyIdParamSchema).output(import_zod11.z.void())
474
567
  };
475
568
  var workspacesContract = {
476
569
  create: import_contract.oc.route({ method: "POST", path: "/api/workspaces" }).input(CreateWorkspaceInputSchema).output(WorkspaceSchema),
477
- list: import_contract.oc.route({ method: "GET", path: "/api/workspaces" }).output(import_zod10.z.array(WorkspaceWithCountSchema)),
570
+ list: import_contract.oc.route({ method: "GET", path: "/api/workspaces" }).output(import_zod11.z.array(WorkspaceWithCountSchema)),
478
571
  get: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(WorkspaceWithCountSchema),
479
572
  update: import_contract.oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema.merge(UpdateWorkspaceInputSchema)).output(WorkspaceSchema),
480
- delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(import_zod10.z.void()),
481
- transfer: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/transfer" }).input(WorkspaceIdParamSchema.merge(TransferOwnershipInputSchema)).output(import_zod10.z.void()),
573
+ delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}" }).input(WorkspaceIdParamSchema).output(import_zod11.z.void()),
574
+ transfer: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/transfer" }).input(WorkspaceIdParamSchema.merge(TransferOwnershipInputSchema)).output(import_zod11.z.void()),
482
575
  // Roles
483
- listRoles: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/roles" }).input(WorkspaceIdParamSchema).output(import_zod10.z.array(WorkspaceRoleSchema)),
576
+ listRoles: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/roles" }).input(WorkspaceIdParamSchema).output(import_zod11.z.array(WorkspaceRoleSchema)),
484
577
  // Members
485
- listMembers: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/members" }).input(WorkspaceIdParamSchema).output(import_zod10.z.array(WorkspaceMemberSchema)),
578
+ listMembers: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/members" }).input(WorkspaceIdParamSchema).output(import_zod11.z.array(WorkspaceMemberSchema)),
486
579
  updateMember: import_contract.oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema.merge(UpdateMemberInputSchema)).output(WorkspaceMemberSchema),
487
- removeMember: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema).output(import_zod10.z.void()),
580
+ removeMember: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/members/{user_id}" }).input(MemberIdParamSchema).output(import_zod11.z.void()),
488
581
  // Invitations
489
- listInvitations: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema).output(import_zod10.z.array(WorkspaceInvitationSchema)),
582
+ listInvitations: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema).output(import_zod11.z.array(WorkspaceInvitationSchema)),
490
583
  createInvitation: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/invitations" }).input(WorkspaceIdParamSchema.merge(CreateInvitationInputSchema)).output(WorkspaceInvitationSchema),
491
- revokeInvitation: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/invitations/{invitation_id}" }).input(InvitationIdParamSchema).output(import_zod10.z.void())
584
+ revokeInvitation: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/invitations/{invitation_id}" }).input(InvitationIdParamSchema).output(import_zod11.z.void())
492
585
  };
493
586
  var invitationsContract = {
494
587
  get: import_contract.oc.route({ method: "GET", path: "/api/invitations/{token}" }).input(TokenParamSchema).output(WorkspaceInvitationSchema),
@@ -499,25 +592,25 @@ var linksContract = {
499
592
  list: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links" }).input(WorkspaceIdParamSchema.merge(LinkFiltersSchema)).output(PaginatedLinksSchema),
500
593
  get: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(LinkSchema),
501
594
  update: import_contract.oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema.merge(UpdateLinkInputSchema)).output(LinkSchema),
502
- delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(import_zod10.z.void()),
503
- edgeSync: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/sync" }).input(LinkIdParamSchema).output(import_zod10.z.void()),
504
- edgeStatus: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/status" }).input(LinkIdParamSchema).output(import_zod10.z.object({ synced: import_zod10.z.boolean() })),
595
+ delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/links/{link_id}" }).input(LinkIdParamSchema).output(import_zod11.z.void()),
596
+ edgeSync: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/sync" }).input(LinkIdParamSchema).output(import_zod11.z.void()),
597
+ edgeStatus: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/links/{link_id}/edge/status" }).input(LinkIdParamSchema).output(import_zod11.z.object({ synced: import_zod11.z.boolean() })),
505
598
  getJob: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}" }).input(LinkJobIdParamSchema).output(LinkJobSchema),
506
- jobResults: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}/results" }).input(LinkJobIdParamSchema).output(import_zod10.z.object({ url: import_zod10.z.string() }))
599
+ jobResults: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/jobs/{job_id}/results" }).input(LinkJobIdParamSchema).output(import_zod11.z.object({ url: import_zod11.z.string() }))
507
600
  };
508
601
  var tagsContract = {
509
602
  create: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema.merge(CreateTagInputSchema)).output(TagSchema),
510
- list: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema).output(import_zod10.z.array(TagSchema)),
603
+ list: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags" }).input(WorkspaceIdParamSchema).output(import_zod11.z.array(TagSchema)),
511
604
  get: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(TagSchema),
512
605
  update: import_contract.oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema.merge(UpdateTagInputSchema)).output(TagSchema),
513
- delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(import_zod10.z.void())
606
+ delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/tags/{tag_id}" }).input(TagIdParamSchema).output(import_zod11.z.void())
514
607
  };
515
608
  var domainsContract = {
516
609
  create: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema.merge(CreateDomainInputSchema)).output(DomainSchema),
517
- list: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema).output(import_zod10.z.array(DomainSchema)),
610
+ list: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains" }).input(WorkspaceIdParamSchema).output(import_zod11.z.array(DomainSchema)),
518
611
  get: import_contract.oc.route({ method: "GET", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(DomainSchema),
519
612
  update: import_contract.oc.route({ method: "PATCH", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema.merge(UpdateDomainInputSchema)).output(DomainSchema),
520
- delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(import_zod10.z.void()),
613
+ delete: import_contract.oc.route({ method: "DELETE", path: "/api/workspaces/{workspace_id}/domains/{domain_id}" }).input(DomainIdParamSchema).output(import_zod11.z.void()),
521
614
  verify: import_contract.oc.route({ method: "POST", path: "/api/workspaces/{workspace_id}/domains/{domain_id}/verify" }).input(DomainIdParamSchema).output(DomainSchema)
522
615
  };
523
616
  var billingContract = {
@@ -567,6 +660,8 @@ var contract = {
567
660
  MemberIdParamSchema,
568
661
  PaginatedLinksSchema,
569
662
  QrCodeSettingsSchema,
663
+ RuleGraphNodeSchema,
664
+ RuleGraphSchema,
570
665
  SignInInputSchema,
571
666
  TagIdParamSchema,
572
667
  TagSchema,