@axova/shared 1.0.0

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.
Files changed (112) hide show
  1. package/CONFIGURATION_GUIDE.md +1 -0
  2. package/README.md +384 -0
  3. package/SCHEMA_ORGANIZATION.md +209 -0
  4. package/dist/configs/index.d.ts +85 -0
  5. package/dist/configs/index.js +555 -0
  6. package/dist/events/kafka.d.ts +40 -0
  7. package/dist/events/kafka.js +311 -0
  8. package/dist/index.d.ts +13 -0
  9. package/dist/index.js +41 -0
  10. package/dist/interfaces/customer-events.d.ts +85 -0
  11. package/dist/interfaces/customer-events.js +2 -0
  12. package/dist/interfaces/inventory-events.d.ts +453 -0
  13. package/dist/interfaces/inventory-events.js +3 -0
  14. package/dist/interfaces/inventory-types.d.ts +894 -0
  15. package/dist/interfaces/inventory-types.js +3 -0
  16. package/dist/interfaces/order-events.d.ts +320 -0
  17. package/dist/interfaces/order-events.js +3 -0
  18. package/dist/lib/auditLogger.d.ts +162 -0
  19. package/dist/lib/auditLogger.js +626 -0
  20. package/dist/lib/authOrganization.d.ts +24 -0
  21. package/dist/lib/authOrganization.js +110 -0
  22. package/dist/lib/db.d.ts +6 -0
  23. package/dist/lib/db.js +88 -0
  24. package/dist/middleware/serviceAuth.d.ts +60 -0
  25. package/dist/middleware/serviceAuth.js +272 -0
  26. package/dist/middleware/storeOwnership.d.ts +15 -0
  27. package/dist/middleware/storeOwnership.js +156 -0
  28. package/dist/middleware/storeValidationMiddleware.d.ts +44 -0
  29. package/dist/middleware/storeValidationMiddleware.js +180 -0
  30. package/dist/middleware/userAuth.d.ts +27 -0
  31. package/dist/middleware/userAuth.js +218 -0
  32. package/dist/schemas/admin/admin-schema.d.ts +741 -0
  33. package/dist/schemas/admin/admin-schema.js +111 -0
  34. package/dist/schemas/ai-moderation/ai-moderation-schema.d.ts +648 -0
  35. package/dist/schemas/ai-moderation/ai-moderation-schema.js +88 -0
  36. package/dist/schemas/common/common-schemas.d.ts +436 -0
  37. package/dist/schemas/common/common-schemas.js +94 -0
  38. package/dist/schemas/compliance/compliance-schema.d.ts +3388 -0
  39. package/dist/schemas/compliance/compliance-schema.js +472 -0
  40. package/dist/schemas/compliance/kyc-schema.d.ts +2642 -0
  41. package/dist/schemas/compliance/kyc-schema.js +361 -0
  42. package/dist/schemas/customer/customer-schema.d.ts +2727 -0
  43. package/dist/schemas/customer/customer-schema.js +399 -0
  44. package/dist/schemas/index.d.ts +27 -0
  45. package/dist/schemas/index.js +138 -0
  46. package/dist/schemas/inventory/inventory-tables.d.ts +9476 -0
  47. package/dist/schemas/inventory/inventory-tables.js +1470 -0
  48. package/dist/schemas/inventory/lot-tables.d.ts +3281 -0
  49. package/dist/schemas/inventory/lot-tables.js +608 -0
  50. package/dist/schemas/order/order-schema.d.ts +5825 -0
  51. package/dist/schemas/order/order-schema.js +954 -0
  52. package/dist/schemas/product/discount-relations.d.ts +15 -0
  53. package/dist/schemas/product/discount-relations.js +34 -0
  54. package/dist/schemas/product/discount-schema.d.ts +1975 -0
  55. package/dist/schemas/product/discount-schema.js +297 -0
  56. package/dist/schemas/product/product-relations.d.ts +41 -0
  57. package/dist/schemas/product/product-relations.js +133 -0
  58. package/dist/schemas/product/product-schema.d.ts +4544 -0
  59. package/dist/schemas/product/product-schema.js +671 -0
  60. package/dist/schemas/store/store-audit-schema.d.ts +4135 -0
  61. package/dist/schemas/store/store-audit-schema.js +556 -0
  62. package/dist/schemas/store/store-schema.d.ts +3100 -0
  63. package/dist/schemas/store/store-schema.js +381 -0
  64. package/dist/schemas/store/store-settings-schema.d.ts +665 -0
  65. package/dist/schemas/store/store-settings-schema.js +141 -0
  66. package/dist/schemas/types.d.ts +50 -0
  67. package/dist/schemas/types.js +3 -0
  68. package/dist/types/events.d.ts +2396 -0
  69. package/dist/types/events.js +505 -0
  70. package/dist/utils/errorHandler.d.ts +12 -0
  71. package/dist/utils/errorHandler.js +36 -0
  72. package/dist/utils/subdomain.d.ts +6 -0
  73. package/dist/utils/subdomain.js +20 -0
  74. package/nul +8 -0
  75. package/package.json +43 -0
  76. package/src/configs/index.ts +654 -0
  77. package/src/events/kafka.ts +429 -0
  78. package/src/index.ts +26 -0
  79. package/src/interfaces/customer-events.ts +106 -0
  80. package/src/interfaces/inventory-events.ts +545 -0
  81. package/src/interfaces/inventory-types.ts +1004 -0
  82. package/src/interfaces/order-events.ts +381 -0
  83. package/src/lib/auditLogger.ts +1117 -0
  84. package/src/lib/authOrganization.ts +153 -0
  85. package/src/lib/db.ts +64 -0
  86. package/src/middleware/serviceAuth.ts +328 -0
  87. package/src/middleware/storeOwnership.ts +199 -0
  88. package/src/middleware/storeValidationMiddleware.ts +247 -0
  89. package/src/middleware/userAuth.ts +248 -0
  90. package/src/schemas/admin/admin-schema.ts +208 -0
  91. package/src/schemas/ai-moderation/ai-moderation-schema.ts +180 -0
  92. package/src/schemas/common/common-schemas.ts +108 -0
  93. package/src/schemas/compliance/compliance-schema.ts +927 -0
  94. package/src/schemas/compliance/kyc-schema.ts +649 -0
  95. package/src/schemas/customer/customer-schema.ts +576 -0
  96. package/src/schemas/index.ts +189 -0
  97. package/src/schemas/inventory/inventory-tables.ts +1927 -0
  98. package/src/schemas/inventory/lot-tables.ts +799 -0
  99. package/src/schemas/order/order-schema.ts +1400 -0
  100. package/src/schemas/product/discount-relations.ts +44 -0
  101. package/src/schemas/product/discount-schema.ts +464 -0
  102. package/src/schemas/product/product-relations.ts +187 -0
  103. package/src/schemas/product/product-schema.ts +955 -0
  104. package/src/schemas/store/ethiopian_business_api.md.resolved +212 -0
  105. package/src/schemas/store/store-audit-schema.ts +1257 -0
  106. package/src/schemas/store/store-schema.ts +661 -0
  107. package/src/schemas/store/store-settings-schema.ts +231 -0
  108. package/src/schemas/types.ts +67 -0
  109. package/src/types/events.ts +646 -0
  110. package/src/utils/errorHandler.ts +44 -0
  111. package/src/utils/subdomain.ts +19 -0
  112. package/tsconfig.json +21 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reviewQueues = exports.adminActions = exports.adminUsers = void 0;
4
+ const cuid2_1 = require("@paralleldrive/cuid2");
5
+ const pg_core_1 = require("drizzle-orm/pg-core");
6
+ // Admin Users Table
7
+ exports.adminUsers = (0, pg_core_1.pgTable)("admin_users", {
8
+ id: (0, pg_core_1.text)("id")
9
+ .primaryKey()
10
+ .$defaultFn(() => (0, cuid2_1.createId)()),
11
+ userId: (0, pg_core_1.text)("user_id").notNull().unique(),
12
+ email: (0, pg_core_1.varchar)("email", { length: 255 }).notNull(),
13
+ name: (0, pg_core_1.varchar)("name", { length: 255 }).notNull(),
14
+ // Role and Permissions
15
+ role: (0, pg_core_1.varchar)("role", { length: 30 })
16
+ .notNull()
17
+ .$type(),
18
+ permissions: (0, pg_core_1.jsonb)("permissions").$type().default([]),
19
+ // Status
20
+ isActive: (0, pg_core_1.boolean)("is_active").notNull().default(true),
21
+ lastLoginAt: (0, pg_core_1.timestamp)("last_login_at", { withTimezone: true }),
22
+ // Department and Team
23
+ department: (0, pg_core_1.varchar)("department", { length: 50 }),
24
+ team: (0, pg_core_1.varchar)("team", { length: 50 }),
25
+ createdAt: (0, pg_core_1.timestamp)("created_at", { withTimezone: true })
26
+ .defaultNow()
27
+ .notNull(),
28
+ updatedAt: (0, pg_core_1.timestamp)("updated_at", { withTimezone: true })
29
+ .defaultNow()
30
+ .notNull(),
31
+ }, (table) => ({
32
+ userIdIndex: (0, pg_core_1.index)("idx_admin_users_user_id").on(table.userId),
33
+ emailIndex: (0, pg_core_1.index)("idx_admin_users_email").on(table.email),
34
+ roleIndex: (0, pg_core_1.index)("idx_admin_users_role").on(table.role),
35
+ activeIndex: (0, pg_core_1.index)("idx_admin_users_active").on(table.isActive),
36
+ }));
37
+ // Admin Actions Table
38
+ exports.adminActions = (0, pg_core_1.pgTable)("admin_actions", {
39
+ id: (0, pg_core_1.text)("id")
40
+ .primaryKey()
41
+ .$defaultFn(() => (0, cuid2_1.createId)()),
42
+ adminUserId: (0, pg_core_1.text)("admin_user_id").notNull(),
43
+ // Action Details
44
+ actionType: (0, pg_core_1.varchar)("action_type", { length: 50 })
45
+ .notNull()
46
+ .$type(),
47
+ targetType: (0, pg_core_1.varchar)("target_type", { length: 30 }).$type(),
48
+ targetId: (0, pg_core_1.text)("target_id").notNull(),
49
+ // Action Data
50
+ actionData: (0, pg_core_1.jsonb)("action_data")
51
+ .$type()
52
+ .default({}),
53
+ reason: (0, pg_core_1.text)("reason").notNull(),
54
+ notes: (0, pg_core_1.text)("notes"),
55
+ // Impact and Risk
56
+ impactLevel: (0, pg_core_1.varchar)("impact_level", { length: 20 }).$type(),
57
+ requiresApproval: (0, pg_core_1.boolean)("requires_approval").notNull().default(false),
58
+ approvedBy: (0, pg_core_1.text)("approved_by"),
59
+ approvedAt: (0, pg_core_1.timestamp)("approved_at", { withTimezone: true }),
60
+ createdAt: (0, pg_core_1.timestamp)("created_at", { withTimezone: true })
61
+ .defaultNow()
62
+ .notNull(),
63
+ }, (table) => ({
64
+ adminUserIndex: (0, pg_core_1.index)("idx_admin_actions_user").on(table.adminUserId),
65
+ actionTypeIndex: (0, pg_core_1.index)("idx_admin_actions_type").on(table.actionType),
66
+ targetIndex: (0, pg_core_1.index)("idx_admin_actions_target").on(table.targetType, table.targetId),
67
+ approvalIndex: (0, pg_core_1.index)("idx_admin_actions_approval").on(table.requiresApproval, table.approvedAt),
68
+ }));
69
+ // Review Queues Table
70
+ exports.reviewQueues = (0, pg_core_1.pgTable)("review_queues", {
71
+ id: (0, pg_core_1.text)("id")
72
+ .primaryKey()
73
+ .$defaultFn(() => (0, cuid2_1.createId)()),
74
+ queueName: (0, pg_core_1.varchar)("queue_name", { length: 100 }).notNull(),
75
+ queueType: (0, pg_core_1.varchar)("queue_type", { length: 30 })
76
+ .notNull()
77
+ .$type(),
78
+ // Item Details
79
+ itemType: (0, pg_core_1.varchar)("item_type", { length: 30 }).$type(),
80
+ itemId: (0, pg_core_1.text)("item_id").notNull(),
81
+ // Priority and Status
82
+ priority: (0, pg_core_1.varchar)("priority", { length: 20 })
83
+ .notNull()
84
+ .default("NORMAL")
85
+ .$type(),
86
+ status: (0, pg_core_1.varchar)("status", { length: 20 })
87
+ .notNull()
88
+ .default("PENDING")
89
+ .$type(),
90
+ // Assignment
91
+ assignedTo: (0, pg_core_1.text)("assigned_to"),
92
+ assignedAt: (0, pg_core_1.timestamp)("assigned_at", { withTimezone: true }),
93
+ // SLA and Timing
94
+ slaDeadline: (0, pg_core_1.timestamp)("sla_deadline", { withTimezone: true }),
95
+ estimatedEffort: (0, pg_core_1.integer)("estimated_effort"), // minutes
96
+ // Context
97
+ context: (0, pg_core_1.jsonb)("context").$type().default({}),
98
+ reviewNotes: (0, pg_core_1.text)("review_notes"),
99
+ createdAt: (0, pg_core_1.timestamp)("created_at", { withTimezone: true })
100
+ .defaultNow()
101
+ .notNull(),
102
+ updatedAt: (0, pg_core_1.timestamp)("updated_at", { withTimezone: true })
103
+ .defaultNow()
104
+ .notNull(),
105
+ }, (table) => ({
106
+ queueTypeIndex: (0, pg_core_1.index)("idx_queues_type").on(table.queueType),
107
+ statusIndex: (0, pg_core_1.index)("idx_queues_status").on(table.status),
108
+ assignmentIndex: (0, pg_core_1.index)("idx_queues_assignment").on(table.assignedTo, table.status),
109
+ priorityIndex: (0, pg_core_1.index)("idx_queues_priority").on(table.priority, table.createdAt),
110
+ slaIndex: (0, pg_core_1.index)("idx_queues_sla").on(table.slaDeadline, table.status),
111
+ }));