@lssm/example.marketplace 0.0.0-canary-20251217080011 → 1.41.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 (205) hide show
  1. package/dist/docs/index.js +1 -1
  2. package/dist/docs/marketplace.docblock.js +5 -61
  3. package/dist/entities/index.js +1 -45
  4. package/dist/entities/order.js +1 -173
  5. package/dist/entities/payout.js +1 -162
  6. package/dist/entities/product.js +1 -161
  7. package/dist/entities/review.js +1 -152
  8. package/dist/entities/store.js +1 -110
  9. package/dist/example.js +1 -50
  10. package/dist/index.js +1 -27
  11. package/dist/marketplace.feature.js +1 -308
  12. package/dist/order/index.js +1 -6
  13. package/dist/order/order.contracts.js +1 -74
  14. package/dist/order/order.enum.js +1 -22
  15. package/dist/order/order.event.js +1 -193
  16. package/dist/order/order.presentation.js +1 -72
  17. package/dist/order/order.schema.js +1 -156
  18. package/dist/payout/index.js +1 -6
  19. package/dist/payout/payout.contracts.js +1 -32
  20. package/dist/payout/payout.enum.js +1 -17
  21. package/dist/payout/payout.event.js +1 -84
  22. package/dist/payout/payout.presentation.js +1 -50
  23. package/dist/payout/payout.schema.js +1 -117
  24. package/dist/product/index.js +1 -6
  25. package/dist/product/product.contracts.js +1 -65
  26. package/dist/product/product.enum.js +1 -18
  27. package/dist/product/product.event.js +1 -103
  28. package/dist/product/product.presentation.js +1 -72
  29. package/dist/product/product.schema.js +1 -177
  30. package/dist/review/index.js +1 -6
  31. package/dist/review/review.contracts.js +1 -65
  32. package/dist/review/review.enum.js +1 -16
  33. package/dist/review/review.event.js +1 -76
  34. package/dist/review/review.presentation.js +1 -50
  35. package/dist/review/review.schema.js +1 -157
  36. package/dist/store/index.js +1 -6
  37. package/dist/store/store.contracts.js +1 -41
  38. package/dist/store/store.enum.js +1 -16
  39. package/dist/store/store.event.js +1 -72
  40. package/dist/store/store.presentation.js +1 -50
  41. package/dist/store/store.schema.js +1 -94
  42. package/dist/tsconfig.tsbuildinfo +1 -0
  43. package/package.json +53 -54
  44. package/dist/docs/index.d.ts +0 -1
  45. package/dist/docs/marketplace.docblock.d.ts +0 -1
  46. package/dist/entities/index.d.ts +0 -308
  47. package/dist/entities/order.d.ts +0 -104
  48. package/dist/entities/payout.d.ts +0 -91
  49. package/dist/entities/product.d.ts +0 -92
  50. package/dist/entities/review.d.ts +0 -82
  51. package/dist/entities/store.d.ts +0 -59
  52. package/dist/example.d.ts +0 -39
  53. package/dist/index.d.ts +0 -21
  54. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  55. package/dist/libs/contracts/dist/client/index.js +0 -5
  56. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  57. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  58. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  59. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  60. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  61. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  62. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  63. package/dist/libs/contracts/dist/docs/index.js +0 -29
  64. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  65. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  66. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  67. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  68. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  69. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  70. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  71. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  72. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  73. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  74. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  75. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  76. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  77. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  78. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  79. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  80. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  81. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  82. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  83. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  84. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  85. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  86. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  87. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  88. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  89. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  90. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  91. package/dist/libs/contracts/dist/events.js +0 -10
  92. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  93. package/dist/libs/contracts/dist/index.js +0 -71
  94. package/dist/libs/contracts/dist/install.js +0 -2
  95. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  96. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  97. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  98. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  99. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  100. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  101. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  102. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  103. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  104. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  105. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  106. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  107. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  108. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  109. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  110. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  111. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  112. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  113. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  114. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  115. package/dist/libs/contracts/dist/jsonschema.js +0 -1
  116. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  117. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  118. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  119. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  120. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  121. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  122. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  123. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  124. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  125. package/dist/libs/contracts/dist/llm/exporters.js +0 -19
  126. package/dist/libs/contracts/dist/llm/index.js +0 -2
  127. package/dist/libs/contracts/dist/llm/prompts.js +0 -1
  128. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  129. package/dist/libs/contracts/dist/openapi.js +0 -1
  130. package/dist/libs/contracts/dist/ownership.js +0 -21
  131. package/dist/libs/contracts/dist/presentations.js +0 -1
  132. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  133. package/dist/libs/contracts/dist/prompt.js +0 -1
  134. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  135. package/dist/libs/contracts/dist/regenerator/index.js +0 -1
  136. package/dist/libs/contracts/dist/regenerator/service.js +0 -6
  137. package/dist/libs/contracts/dist/registry.js +0 -2
  138. package/dist/libs/contracts/dist/resources.js +0 -1
  139. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  140. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  141. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  142. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  143. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  144. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  145. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  146. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  147. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  148. package/dist/libs/contracts/dist/server/index.js +0 -8
  149. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  150. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  151. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  152. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  153. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  154. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  155. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  156. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  157. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  158. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  159. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  160. package/dist/libs/contracts/dist/spec.js +0 -34
  161. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  162. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  163. package/dist/libs/contracts/dist/tests/index.js +0 -1
  164. package/dist/libs/contracts/dist/tests/runner.js +0 -2
  165. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  166. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  167. package/dist/libs/schema/dist/EnumType.js +0 -56
  168. package/dist/libs/schema/dist/FieldType.js +0 -49
  169. package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
  170. package/dist/libs/schema/dist/SchemaModel.js +0 -39
  171. package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
  172. package/dist/libs/schema/dist/entity/index.js +0 -2
  173. package/dist/libs/schema/dist/entity/types.js +0 -1
  174. package/dist/libs/schema/dist/index.js +0 -6
  175. package/dist/marketplace.feature.d.ts +0 -11
  176. package/dist/order/index.d.ts +0 -5
  177. package/dist/order/order.contracts.d.ts +0 -367
  178. package/dist/order/order.enum.d.ts +0 -9
  179. package/dist/order/order.event.d.ts +0 -144
  180. package/dist/order/order.presentation.d.ts +0 -8
  181. package/dist/order/order.schema.d.ts +0 -164
  182. package/dist/payout/index.d.ts +0 -5
  183. package/dist/payout/payout.contracts.d.ts +0 -96
  184. package/dist/payout/payout.enum.d.ts +0 -9
  185. package/dist/payout/payout.event.d.ts +0 -62
  186. package/dist/payout/payout.presentation.d.ts +0 -7
  187. package/dist/payout/payout.schema.d.ts +0 -156
  188. package/dist/product/index.d.ts +0 -5
  189. package/dist/product/product.contracts.d.ts +0 -272
  190. package/dist/product/product.enum.d.ts +0 -9
  191. package/dist/product/product.event.d.ts +0 -72
  192. package/dist/product/product.presentation.d.ts +0 -8
  193. package/dist/product/product.schema.d.ts +0 -217
  194. package/dist/review/index.d.ts +0 -5
  195. package/dist/review/review.contracts.d.ts +0 -236
  196. package/dist/review/review.enum.d.ts +0 -9
  197. package/dist/review/review.event.d.ts +0 -54
  198. package/dist/review/review.presentation.d.ts +0 -7
  199. package/dist/review/review.schema.d.ts +0 -189
  200. package/dist/store/index.d.ts +0 -5
  201. package/dist/store/store.contracts.d.ts +0 -130
  202. package/dist/store/store.enum.d.ts +0 -9
  203. package/dist/store/store.event.d.ts +0 -50
  204. package/dist/store/store.presentation.d.ts +0 -7
  205. package/dist/store/store.schema.d.ts +0 -83
@@ -1 +1 @@
1
- import "./marketplace.docblock.js";
1
+ import"./marketplace.docblock.js";
@@ -1,22 +1,4 @@
1
- import { registerDocBlocks } from "../libs/contracts/dist/docs/registry.js";
2
- import "../libs/contracts/dist/docs/index.js";
3
-
4
- //#region src/docs/marketplace.docblock.ts
5
- registerDocBlocks([
6
- {
7
- id: "docs.examples.marketplace",
8
- title: "Marketplace (2-sided)",
9
- summary: "Two-sided marketplace with stores, products, orders, payouts, and reviews. Demonstrates multi-actor flows, payments, and attachments.",
10
- kind: "reference",
11
- visibility: "public",
12
- route: "/docs/examples/marketplace",
13
- tags: [
14
- "marketplace",
15
- "orders",
16
- "payouts",
17
- "reviews"
18
- ],
19
- body: `## Entities
1
+ import{registerDocBlocks as e}from"@lssm/lib.contracts/docs";e([{id:`docs.examples.marketplace`,title:`Marketplace (2-sided)`,summary:`Two-sided marketplace with stores, products, orders, payouts, and reviews. Demonstrates multi-actor flows, payments, and attachments.`,kind:`reference`,visibility:`public`,route:`/docs/examples/marketplace`,tags:[`marketplace`,`orders`,`payouts`,`reviews`],body:`## Entities
20
2
 
21
3
  - Store, Product, Order, OrderItem, Payout, Review.
22
4
  - Uses Files module for product media and receipt attachments.
@@ -40,17 +22,7 @@ registerDocBlocks([
40
22
 
41
23
  - Commission model encoded in spec; payouts scheduled via Jobs module.
42
24
  - Feature flags can gate beta checkout or new reviews flow.
43
- `
44
- },
45
- {
46
- id: "docs.examples.marketplace.goal",
47
- title: "Marketplace — Goal",
48
- summary: "Why this marketplace template exists and the outcomes it targets.",
49
- kind: "goal",
50
- visibility: "public",
51
- route: "/docs/examples/marketplace/goal",
52
- tags: ["marketplace", "goal"],
53
- body: `## Why it matters
25
+ `},{id:`docs.examples.marketplace.goal`,title:`Marketplace — Goal`,summary:`Why this marketplace template exists and the outcomes it targets.`,kind:`goal`,visibility:`public`,route:`/docs/examples/marketplace/goal`,tags:[`marketplace`,`goal`],body:`## Why it matters
54
26
  - Provides a regenerable 2-sided marketplace baseline without bespoke glue.
55
27
  - Keeps payouts, catalog, orders, and reviews consistent across surfaces.
56
28
 
@@ -60,17 +32,7 @@ registerDocBlocks([
60
32
 
61
33
  ## Success criteria
62
34
  - Orders/payouts regenerate cleanly after spec changes.
63
- - Events emit for lifecycle + audit; PII is scoped/redacted in presentations.`
64
- },
65
- {
66
- id: "docs.examples.marketplace.usage",
67
- title: "Marketplace — Usage",
68
- summary: "How to seed, extend, and safely regenerate the marketplace.",
69
- kind: "usage",
70
- visibility: "public",
71
- route: "/docs/examples/marketplace/usage",
72
- tags: ["marketplace", "usage"],
73
- body: `## Setup
35
+ - Events emit for lifecycle + audit; PII is scoped/redacted in presentations.`},{id:`docs.examples.marketplace.usage`,title:`Marketplace — Usage`,summary:`How to seed, extend, and safely regenerate the marketplace.`,kind:`usage`,visibility:`public`,route:`/docs/examples/marketplace/usage`,tags:[`marketplace`,`usage`],body:`## Setup
74
36
  1) Seed sample stores/products/orders via template registry (or create via UI).
75
37
  2) Configure Files storage for media/receipts; set policy.pii for sensitive fields.
76
38
 
@@ -82,21 +44,7 @@ registerDocBlocks([
82
44
  ## Guardrails
83
45
  - Emit events for order/payout state changes; log via Audit Trail.
84
46
  - Avoid hidden commission math—keep explicit fields.
85
- - Redact buyer/provider PII in markdown/JSON presentations.`
86
- },
87
- {
88
- id: "docs.examples.marketplace.constraints",
89
- title: "Marketplace — Constraints & Safety",
90
- summary: "Internal guardrails for payouts, order states, and regeneration semantics.",
91
- kind: "reference",
92
- visibility: "internal",
93
- route: "/docs/examples/marketplace/constraints",
94
- tags: [
95
- "marketplace",
96
- "constraints",
97
- "internal"
98
- ],
99
- body: `## Constraints
47
+ - Redact buyer/provider PII in markdown/JSON presentations.`},{id:`docs.examples.marketplace.constraints`,title:`Marketplace — Constraints & Safety`,summary:`Internal guardrails for payouts, order states, and regeneration semantics.`,kind:`reference`,visibility:`internal`,route:`/docs/examples/marketplace/constraints`,tags:[`marketplace`,`constraints`,`internal`],body:`## Constraints
100
48
  - Commission logic and order states must stay spec-defined; never adjust in code-only patches.
101
49
  - Events to emit: order.created, order.completed, payout.queued, review.posted (minimum).
102
50
  - Regeneration must not change payment semantics without explicit spec diff.
@@ -108,8 +56,4 @@ registerDocBlocks([
108
56
  ## Testing/Verification
109
57
  - Add fixtures covering order lifecycle and payout queueing.
110
58
  - Run regeneration diff when changing commission/tax fields; verify presentations updated.
111
- - Ensure Notifications/Audit wiring remains intact for order/payout/review events.`
112
- }
113
- ]);
114
-
115
- //#endregion
59
+ - Ensure Notifications/Audit wiring remains intact for order/payout/review events.`}]);
@@ -1,45 +1 @@
1
- import { StoreCategoryEntity, StoreEntity, StoreStatusEnum, StoreTypeEnum } from "./store.js";
2
- import { CategoryEntity, ProductEntity, ProductStatusEnum, ProductTypeEnum, ProductVariantEntity } from "./product.js";
3
- import { OrderEntity, OrderItemEntity, OrderStatusEnum, PaymentStatusEnum, RefundEntity, RefundItemEntity } from "./order.js";
4
- import { BankAccountEntity, PayoutEntity, PayoutItemEntity, PayoutScheduleEnum, PayoutSettingsEntity, PayoutStatusEnum } from "./payout.js";
5
- import { ReviewEntity, ReviewReportEntity, ReviewResponseEntity, ReviewStatusEnum, ReviewTypeEnum, ReviewVoteEntity } from "./review.js";
6
-
7
- //#region src/entities/index.ts
8
- const marketplaceEntities = [
9
- StoreEntity,
10
- StoreCategoryEntity,
11
- ProductEntity,
12
- ProductVariantEntity,
13
- CategoryEntity,
14
- OrderEntity,
15
- OrderItemEntity,
16
- RefundEntity,
17
- RefundItemEntity,
18
- PayoutEntity,
19
- PayoutItemEntity,
20
- BankAccountEntity,
21
- PayoutSettingsEntity,
22
- ReviewEntity,
23
- ReviewResponseEntity,
24
- ReviewVoteEntity,
25
- ReviewReportEntity
26
- ];
27
- const marketplaceSchemaContribution = {
28
- moduleId: "@lssm/example.marketplace",
29
- entities: marketplaceEntities,
30
- enums: [
31
- StoreStatusEnum,
32
- StoreTypeEnum,
33
- ProductStatusEnum,
34
- ProductTypeEnum,
35
- OrderStatusEnum,
36
- PaymentStatusEnum,
37
- PayoutStatusEnum,
38
- PayoutScheduleEnum,
39
- ReviewStatusEnum,
40
- ReviewTypeEnum
41
- ]
42
- };
43
-
44
- //#endregion
45
- export { BankAccountEntity, CategoryEntity, OrderEntity, OrderItemEntity, OrderStatusEnum, PaymentStatusEnum, PayoutEntity, PayoutItemEntity, PayoutScheduleEnum, PayoutSettingsEntity, PayoutStatusEnum, ProductEntity, ProductStatusEnum, ProductTypeEnum, ProductVariantEntity, RefundEntity, RefundItemEntity, ReviewEntity, ReviewReportEntity, ReviewResponseEntity, ReviewStatusEnum, ReviewTypeEnum, ReviewVoteEntity, StoreCategoryEntity, StoreEntity, StoreStatusEnum, StoreTypeEnum, marketplaceEntities, marketplaceSchemaContribution };
1
+ import{StoreCategoryEntity as e,StoreEntity as t,StoreStatusEnum as n,StoreTypeEnum as r}from"./store.js";import{CategoryEntity as i,ProductEntity as a,ProductStatusEnum as o,ProductTypeEnum as s,ProductVariantEntity as c}from"./product.js";import{OrderEntity as l,OrderItemEntity as u,OrderStatusEnum as d,PaymentStatusEnum as f,RefundEntity as p,RefundItemEntity as m}from"./order.js";import{BankAccountEntity as h,PayoutEntity as g,PayoutItemEntity as _,PayoutScheduleEnum as v,PayoutSettingsEntity as y,PayoutStatusEnum as b}from"./payout.js";import{ReviewEntity as x,ReviewReportEntity as S,ReviewResponseEntity as C,ReviewStatusEnum as w,ReviewTypeEnum as T,ReviewVoteEntity as E}from"./review.js";const D=[t,e,a,c,i,l,u,p,m,g,_,h,y,x,C,E,S],O={moduleId:`@lssm/example.marketplace`,entities:D,enums:[n,r,o,s,d,f,b,v,w,T]};export{h as BankAccountEntity,i as CategoryEntity,l as OrderEntity,u as OrderItemEntity,d as OrderStatusEnum,f as PaymentStatusEnum,g as PayoutEntity,_ as PayoutItemEntity,v as PayoutScheduleEnum,y as PayoutSettingsEntity,b as PayoutStatusEnum,a as ProductEntity,o as ProductStatusEnum,s as ProductTypeEnum,c as ProductVariantEntity,p as RefundEntity,m as RefundItemEntity,x as ReviewEntity,S as ReviewReportEntity,C as ReviewResponseEntity,w as ReviewStatusEnum,T as ReviewTypeEnum,E as ReviewVoteEntity,e as StoreCategoryEntity,t as StoreEntity,n as StoreStatusEnum,r as StoreTypeEnum,D as marketplaceEntities,O as marketplaceSchemaContribution};
@@ -1,173 +1 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
- import "../libs/schema/dist/index.js";
3
-
4
- //#region src/entities/order.ts
5
- /**
6
- * Order status enum.
7
- */
8
- const OrderStatusEnum = defineEntityEnum({
9
- name: "OrderStatus",
10
- values: [
11
- "PENDING",
12
- "PAID",
13
- "PROCESSING",
14
- "SHIPPED",
15
- "DELIVERED",
16
- "COMPLETED",
17
- "CANCELLED",
18
- "REFUNDED",
19
- "PARTIALLY_REFUNDED",
20
- "DISPUTED"
21
- ],
22
- schema: "marketplace",
23
- description: "Status of an order."
24
- });
25
- /**
26
- * Payment status enum.
27
- */
28
- const PaymentStatusEnum = defineEntityEnum({
29
- name: "PaymentStatus",
30
- values: [
31
- "PENDING",
32
- "AUTHORIZED",
33
- "CAPTURED",
34
- "FAILED",
35
- "REFUNDED",
36
- "VOIDED"
37
- ],
38
- schema: "marketplace",
39
- description: "Status of payment."
40
- });
41
- /**
42
- * Order entity - a purchase transaction.
43
- */
44
- const OrderEntity = defineEntity({
45
- name: "Order",
46
- description: "A purchase order on the marketplace.",
47
- schema: "marketplace",
48
- map: "order",
49
- fields: {
50
- id: field.id({ description: "Unique order ID" }),
51
- orderNumber: field.string({ description: "Human-readable order number" }),
52
- buyerId: field.foreignKey({ description: "Buyer user ID" }),
53
- storeId: field.foreignKey({ description: "Seller store ID" }),
54
- status: field.enum("OrderStatus", { default: "PENDING" }),
55
- paymentStatus: field.enum("PaymentStatus", { default: "PENDING" }),
56
- subtotal: field.decimal({ description: "Sum of item prices" }),
57
- shippingTotal: field.decimal({ default: 0 }),
58
- taxTotal: field.decimal({ default: 0 }),
59
- discountTotal: field.decimal({ default: 0 }),
60
- total: field.decimal({ description: "Final total" }),
61
- currency: field.string({ default: "\"USD\"" }),
62
- platformFee: field.decimal({ description: "Platform commission amount" }),
63
- sellerPayout: field.decimal({ description: "Amount due to seller" }),
64
- shippingAddress: field.json({ isOptional: true }),
65
- billingAddress: field.json({ isOptional: true }),
66
- shippingMethod: field.string({ isOptional: true }),
67
- trackingNumber: field.string({ isOptional: true }),
68
- trackingUrl: field.string({ isOptional: true }),
69
- paymentMethod: field.string({ isOptional: true }),
70
- paymentIntentId: field.string({ isOptional: true }),
71
- buyerNote: field.string({ isOptional: true }),
72
- sellerNote: field.string({ isOptional: true }),
73
- internalNote: field.string({ isOptional: true }),
74
- createdAt: field.createdAt(),
75
- updatedAt: field.updatedAt(),
76
- paidAt: field.dateTime({ isOptional: true }),
77
- shippedAt: field.dateTime({ isOptional: true }),
78
- deliveredAt: field.dateTime({ isOptional: true }),
79
- completedAt: field.dateTime({ isOptional: true }),
80
- cancelledAt: field.dateTime({ isOptional: true }),
81
- store: field.belongsTo("Store", ["storeId"], ["id"]),
82
- items: field.hasMany("OrderItem"),
83
- refunds: field.hasMany("Refund")
84
- },
85
- indexes: [
86
- index.unique(["orderNumber"]),
87
- index.on(["buyerId", "status"]),
88
- index.on(["storeId", "status"]),
89
- index.on(["status", "createdAt"]),
90
- index.on(["paymentStatus"]),
91
- index.on(["createdAt"])
92
- ],
93
- enums: [OrderStatusEnum, PaymentStatusEnum]
94
- });
95
- /**
96
- * Order item entity - individual items in an order.
97
- */
98
- const OrderItemEntity = defineEntity({
99
- name: "OrderItem",
100
- description: "An item within an order.",
101
- schema: "marketplace",
102
- map: "order_item",
103
- fields: {
104
- id: field.id(),
105
- orderId: field.foreignKey(),
106
- productId: field.foreignKey(),
107
- variantId: field.string({ isOptional: true }),
108
- productName: field.string(),
109
- variantName: field.string({ isOptional: true }),
110
- sku: field.string({ isOptional: true }),
111
- unitPrice: field.decimal(),
112
- quantity: field.int(),
113
- subtotal: field.decimal(),
114
- quantityFulfilled: field.int({ default: 0 }),
115
- quantityRefunded: field.int({ default: 0 }),
116
- createdAt: field.createdAt(),
117
- updatedAt: field.updatedAt(),
118
- order: field.belongsTo("Order", ["orderId"], ["id"], { onDelete: "Cascade" }),
119
- product: field.belongsTo("Product", ["productId"], ["id"])
120
- },
121
- indexes: [index.on(["orderId"]), index.on(["productId"])]
122
- });
123
- /**
124
- * Refund entity - refund records for orders.
125
- */
126
- const RefundEntity = defineEntity({
127
- name: "Refund",
128
- description: "A refund for an order.",
129
- schema: "marketplace",
130
- map: "refund",
131
- fields: {
132
- id: field.id(),
133
- orderId: field.foreignKey(),
134
- amount: field.decimal(),
135
- currency: field.string(),
136
- reason: field.string(),
137
- notes: field.string({ isOptional: true }),
138
- status: field.string({ default: "\"PENDING\"" }),
139
- refundId: field.string({
140
- isOptional: true,
141
- description: "Payment provider refund ID"
142
- }),
143
- issuedBy: field.foreignKey({ description: "User who issued the refund" }),
144
- createdAt: field.createdAt(),
145
- processedAt: field.dateTime({ isOptional: true }),
146
- order: field.belongsTo("Order", ["orderId"], ["id"]),
147
- items: field.hasMany("RefundItem")
148
- },
149
- indexes: [index.on(["orderId"]), index.on(["status"])]
150
- });
151
- /**
152
- * Refund item entity - items being refunded.
153
- */
154
- const RefundItemEntity = defineEntity({
155
- name: "RefundItem",
156
- description: "An item within a refund.",
157
- schema: "marketplace",
158
- map: "refund_item",
159
- fields: {
160
- id: field.id(),
161
- refundId: field.foreignKey(),
162
- orderItemId: field.foreignKey(),
163
- quantity: field.int(),
164
- amount: field.decimal(),
165
- createdAt: field.createdAt(),
166
- refund: field.belongsTo("Refund", ["refundId"], ["id"], { onDelete: "Cascade" }),
167
- orderItem: field.belongsTo("OrderItem", ["orderItemId"], ["id"])
168
- },
169
- indexes: [index.on(["refundId"]), index.on(["orderItemId"])]
170
- });
171
-
172
- //#endregion
173
- export { OrderEntity, OrderItemEntity, OrderStatusEnum, PaymentStatusEnum, RefundEntity, RefundItemEntity };
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`OrderStatus`,values:[`PENDING`,`PAID`,`PROCESSING`,`SHIPPED`,`DELIVERED`,`COMPLETED`,`CANCELLED`,`REFUNDED`,`PARTIALLY_REFUNDED`,`DISPUTED`],schema:`marketplace`,description:`Status of an order.`}),a=t({name:`PaymentStatus`,values:[`PENDING`,`AUTHORIZED`,`CAPTURED`,`FAILED`,`REFUNDED`,`VOIDED`],schema:`marketplace`,description:`Status of payment.`}),o=e({name:`Order`,description:`A purchase order on the marketplace.`,schema:`marketplace`,map:`order`,fields:{id:n.id({description:`Unique order ID`}),orderNumber:n.string({description:`Human-readable order number`}),buyerId:n.foreignKey({description:`Buyer user ID`}),storeId:n.foreignKey({description:`Seller store ID`}),status:n.enum(`OrderStatus`,{default:`PENDING`}),paymentStatus:n.enum(`PaymentStatus`,{default:`PENDING`}),subtotal:n.decimal({description:`Sum of item prices`}),shippingTotal:n.decimal({default:0}),taxTotal:n.decimal({default:0}),discountTotal:n.decimal({default:0}),total:n.decimal({description:`Final total`}),currency:n.string({default:`"USD"`}),platformFee:n.decimal({description:`Platform commission amount`}),sellerPayout:n.decimal({description:`Amount due to seller`}),shippingAddress:n.json({isOptional:!0}),billingAddress:n.json({isOptional:!0}),shippingMethod:n.string({isOptional:!0}),trackingNumber:n.string({isOptional:!0}),trackingUrl:n.string({isOptional:!0}),paymentMethod:n.string({isOptional:!0}),paymentIntentId:n.string({isOptional:!0}),buyerNote:n.string({isOptional:!0}),sellerNote:n.string({isOptional:!0}),internalNote:n.string({isOptional:!0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),paidAt:n.dateTime({isOptional:!0}),shippedAt:n.dateTime({isOptional:!0}),deliveredAt:n.dateTime({isOptional:!0}),completedAt:n.dateTime({isOptional:!0}),cancelledAt:n.dateTime({isOptional:!0}),store:n.belongsTo(`Store`,[`storeId`],[`id`]),items:n.hasMany(`OrderItem`),refunds:n.hasMany(`Refund`)},indexes:[r.unique([`orderNumber`]),r.on([`buyerId`,`status`]),r.on([`storeId`,`status`]),r.on([`status`,`createdAt`]),r.on([`paymentStatus`]),r.on([`createdAt`])],enums:[i,a]}),s=e({name:`OrderItem`,description:`An item within an order.`,schema:`marketplace`,map:`order_item`,fields:{id:n.id(),orderId:n.foreignKey(),productId:n.foreignKey(),variantId:n.string({isOptional:!0}),productName:n.string(),variantName:n.string({isOptional:!0}),sku:n.string({isOptional:!0}),unitPrice:n.decimal(),quantity:n.int(),subtotal:n.decimal(),quantityFulfilled:n.int({default:0}),quantityRefunded:n.int({default:0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),order:n.belongsTo(`Order`,[`orderId`],[`id`],{onDelete:`Cascade`}),product:n.belongsTo(`Product`,[`productId`],[`id`])},indexes:[r.on([`orderId`]),r.on([`productId`])]}),c=e({name:`Refund`,description:`A refund for an order.`,schema:`marketplace`,map:`refund`,fields:{id:n.id(),orderId:n.foreignKey(),amount:n.decimal(),currency:n.string(),reason:n.string(),notes:n.string({isOptional:!0}),status:n.string({default:`"PENDING"`}),refundId:n.string({isOptional:!0,description:`Payment provider refund ID`}),issuedBy:n.foreignKey({description:`User who issued the refund`}),createdAt:n.createdAt(),processedAt:n.dateTime({isOptional:!0}),order:n.belongsTo(`Order`,[`orderId`],[`id`]),items:n.hasMany(`RefundItem`)},indexes:[r.on([`orderId`]),r.on([`status`])]}),l=e({name:`RefundItem`,description:`An item within a refund.`,schema:`marketplace`,map:`refund_item`,fields:{id:n.id(),refundId:n.foreignKey(),orderItemId:n.foreignKey(),quantity:n.int(),amount:n.decimal(),createdAt:n.createdAt(),refund:n.belongsTo(`Refund`,[`refundId`],[`id`],{onDelete:`Cascade`}),orderItem:n.belongsTo(`OrderItem`,[`orderItemId`],[`id`])},indexes:[r.on([`refundId`]),r.on([`orderItemId`])]});export{o as OrderEntity,s as OrderItemEntity,i as OrderStatusEnum,a as PaymentStatusEnum,c as RefundEntity,l as RefundItemEntity};
@@ -1,162 +1 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
- import "../libs/schema/dist/index.js";
3
-
4
- //#region src/entities/payout.ts
5
- /**
6
- * Payout status enum.
7
- */
8
- const PayoutStatusEnum = defineEntityEnum({
9
- name: "PayoutStatus",
10
- values: [
11
- "PENDING",
12
- "PROCESSING",
13
- "PAID",
14
- "FAILED",
15
- "CANCELLED"
16
- ],
17
- schema: "marketplace",
18
- description: "Status of a payout."
19
- });
20
- /**
21
- * Payout schedule enum.
22
- */
23
- const PayoutScheduleEnum = defineEntityEnum({
24
- name: "PayoutSchedule",
25
- values: [
26
- "DAILY",
27
- "WEEKLY",
28
- "BIWEEKLY",
29
- "MONTHLY",
30
- "MANUAL"
31
- ],
32
- schema: "marketplace",
33
- description: "Payout schedule frequency."
34
- });
35
- /**
36
- * Payout entity - payment to seller.
37
- */
38
- const PayoutEntity = defineEntity({
39
- name: "Payout",
40
- description: "A payout to a seller.",
41
- schema: "marketplace",
42
- map: "payout",
43
- fields: {
44
- id: field.id({ description: "Unique payout ID" }),
45
- storeId: field.foreignKey(),
46
- payoutNumber: field.string({ description: "Human-readable payout number" }),
47
- status: field.enum("PayoutStatus", { default: "PENDING" }),
48
- grossAmount: field.decimal({ description: "Total before fees" }),
49
- platformFees: field.decimal({ description: "Platform fees deducted" }),
50
- otherDeductions: field.decimal({ default: 0 }),
51
- netAmount: field.decimal({ description: "Final payout amount" }),
52
- currency: field.string({ default: "\"USD\"" }),
53
- periodStart: field.dateTime({ description: "Start of payout period" }),
54
- periodEnd: field.dateTime({ description: "End of payout period" }),
55
- paymentMethod: field.string({ isOptional: true }),
56
- paymentReference: field.string({ isOptional: true }),
57
- bankAccountId: field.string({ isOptional: true }),
58
- bankAccountLast4: field.string({ isOptional: true }),
59
- notes: field.string({ isOptional: true }),
60
- failureReason: field.string({ isOptional: true }),
61
- orderCount: field.int({ default: 0 }),
62
- createdAt: field.createdAt(),
63
- updatedAt: field.updatedAt(),
64
- scheduledAt: field.dateTime({ isOptional: true }),
65
- processedAt: field.dateTime({ isOptional: true }),
66
- paidAt: field.dateTime({ isOptional: true }),
67
- store: field.belongsTo("Store", ["storeId"], ["id"]),
68
- items: field.hasMany("PayoutItem")
69
- },
70
- indexes: [
71
- index.unique(["payoutNumber"]),
72
- index.on(["storeId", "status"]),
73
- index.on(["status", "scheduledAt"]),
74
- index.on(["periodStart", "periodEnd"])
75
- ],
76
- enums: [PayoutStatusEnum]
77
- });
78
- /**
79
- * Payout item entity - orders included in a payout.
80
- */
81
- const PayoutItemEntity = defineEntity({
82
- name: "PayoutItem",
83
- description: "An order included in a payout.",
84
- schema: "marketplace",
85
- map: "payout_item",
86
- fields: {
87
- id: field.id(),
88
- payoutId: field.foreignKey(),
89
- orderId: field.foreignKey(),
90
- orderTotal: field.decimal(),
91
- platformFee: field.decimal(),
92
- netAmount: field.decimal(),
93
- createdAt: field.createdAt(),
94
- payout: field.belongsTo("Payout", ["payoutId"], ["id"], { onDelete: "Cascade" }),
95
- order: field.belongsTo("Order", ["orderId"], ["id"])
96
- },
97
- indexes: [index.on(["payoutId"]), index.on(["orderId"])]
98
- });
99
- /**
100
- * Bank account entity - seller payment destinations.
101
- */
102
- const BankAccountEntity = defineEntity({
103
- name: "BankAccount",
104
- description: "A bank account for receiving payouts.",
105
- schema: "marketplace",
106
- map: "bank_account",
107
- fields: {
108
- id: field.id(),
109
- storeId: field.foreignKey(),
110
- accountHolderName: field.string(),
111
- accountType: field.string({ default: "\"CHECKING\"" }),
112
- bankName: field.string({ isOptional: true }),
113
- last4: field.string({ description: "Last 4 digits of account" }),
114
- routingLast4: field.string({ isOptional: true }),
115
- externalId: field.string({
116
- isOptional: true,
117
- description: "External provider account ID"
118
- }),
119
- isDefault: field.boolean({ default: false }),
120
- isVerified: field.boolean({ default: false }),
121
- createdAt: field.createdAt(),
122
- updatedAt: field.updatedAt(),
123
- verifiedAt: field.dateTime({ isOptional: true }),
124
- store: field.belongsTo("Store", ["storeId"], ["id"])
125
- },
126
- indexes: [index.on(["storeId", "isDefault"]), index.on(["externalId"])]
127
- });
128
- /**
129
- * Payout settings entity - store payout configuration.
130
- */
131
- const PayoutSettingsEntity = defineEntity({
132
- name: "PayoutSettings",
133
- description: "Payout configuration for a store.",
134
- schema: "marketplace",
135
- map: "payout_settings",
136
- fields: {
137
- id: field.id(),
138
- storeId: field.foreignKey(),
139
- schedule: field.enum("PayoutSchedule", { default: "WEEKLY" }),
140
- dayOfWeek: field.int({
141
- isOptional: true,
142
- description: "Day for weekly/biweekly (0=Sunday)"
143
- }),
144
- dayOfMonth: field.int({
145
- isOptional: true,
146
- description: "Day for monthly (1-28)"
147
- }),
148
- minimumPayout: field.decimal({
149
- default: 50,
150
- description: "Minimum amount for payout"
151
- }),
152
- defaultBankAccountId: field.string({ isOptional: true }),
153
- createdAt: field.createdAt(),
154
- updatedAt: field.updatedAt(),
155
- store: field.belongsTo("Store", ["storeId"], ["id"])
156
- },
157
- indexes: [index.unique(["storeId"])],
158
- enums: [PayoutScheduleEnum]
159
- });
160
-
161
- //#endregion
162
- export { BankAccountEntity, PayoutEntity, PayoutItemEntity, PayoutScheduleEnum, PayoutSettingsEntity, PayoutStatusEnum };
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`PayoutStatus`,values:[`PENDING`,`PROCESSING`,`PAID`,`FAILED`,`CANCELLED`],schema:`marketplace`,description:`Status of a payout.`}),a=t({name:`PayoutSchedule`,values:[`DAILY`,`WEEKLY`,`BIWEEKLY`,`MONTHLY`,`MANUAL`],schema:`marketplace`,description:`Payout schedule frequency.`}),o=e({name:`Payout`,description:`A payout to a seller.`,schema:`marketplace`,map:`payout`,fields:{id:n.id({description:`Unique payout ID`}),storeId:n.foreignKey(),payoutNumber:n.string({description:`Human-readable payout number`}),status:n.enum(`PayoutStatus`,{default:`PENDING`}),grossAmount:n.decimal({description:`Total before fees`}),platformFees:n.decimal({description:`Platform fees deducted`}),otherDeductions:n.decimal({default:0}),netAmount:n.decimal({description:`Final payout amount`}),currency:n.string({default:`"USD"`}),periodStart:n.dateTime({description:`Start of payout period`}),periodEnd:n.dateTime({description:`End of payout period`}),paymentMethod:n.string({isOptional:!0}),paymentReference:n.string({isOptional:!0}),bankAccountId:n.string({isOptional:!0}),bankAccountLast4:n.string({isOptional:!0}),notes:n.string({isOptional:!0}),failureReason:n.string({isOptional:!0}),orderCount:n.int({default:0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),scheduledAt:n.dateTime({isOptional:!0}),processedAt:n.dateTime({isOptional:!0}),paidAt:n.dateTime({isOptional:!0}),store:n.belongsTo(`Store`,[`storeId`],[`id`]),items:n.hasMany(`PayoutItem`)},indexes:[r.unique([`payoutNumber`]),r.on([`storeId`,`status`]),r.on([`status`,`scheduledAt`]),r.on([`periodStart`,`periodEnd`])],enums:[i]}),s=e({name:`PayoutItem`,description:`An order included in a payout.`,schema:`marketplace`,map:`payout_item`,fields:{id:n.id(),payoutId:n.foreignKey(),orderId:n.foreignKey(),orderTotal:n.decimal(),platformFee:n.decimal(),netAmount:n.decimal(),createdAt:n.createdAt(),payout:n.belongsTo(`Payout`,[`payoutId`],[`id`],{onDelete:`Cascade`}),order:n.belongsTo(`Order`,[`orderId`],[`id`])},indexes:[r.on([`payoutId`]),r.on([`orderId`])]}),c=e({name:`BankAccount`,description:`A bank account for receiving payouts.`,schema:`marketplace`,map:`bank_account`,fields:{id:n.id(),storeId:n.foreignKey(),accountHolderName:n.string(),accountType:n.string({default:`"CHECKING"`}),bankName:n.string({isOptional:!0}),last4:n.string({description:`Last 4 digits of account`}),routingLast4:n.string({isOptional:!0}),externalId:n.string({isOptional:!0,description:`External provider account ID`}),isDefault:n.boolean({default:!1}),isVerified:n.boolean({default:!1}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),verifiedAt:n.dateTime({isOptional:!0}),store:n.belongsTo(`Store`,[`storeId`],[`id`])},indexes:[r.on([`storeId`,`isDefault`]),r.on([`externalId`])]}),l=e({name:`PayoutSettings`,description:`Payout configuration for a store.`,schema:`marketplace`,map:`payout_settings`,fields:{id:n.id(),storeId:n.foreignKey(),schedule:n.enum(`PayoutSchedule`,{default:`WEEKLY`}),dayOfWeek:n.int({isOptional:!0,description:`Day for weekly/biweekly (0=Sunday)`}),dayOfMonth:n.int({isOptional:!0,description:`Day for monthly (1-28)`}),minimumPayout:n.decimal({default:50,description:`Minimum amount for payout`}),defaultBankAccountId:n.string({isOptional:!0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),store:n.belongsTo(`Store`,[`storeId`],[`id`])},indexes:[r.unique([`storeId`])],enums:[a]});export{c as BankAccountEntity,o as PayoutEntity,s as PayoutItemEntity,a as PayoutScheduleEnum,l as PayoutSettingsEntity,i as PayoutStatusEnum};
@@ -1,161 +1 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "../libs/schema/dist/entity/defineEntity.js";
2
- import "../libs/schema/dist/index.js";
3
-
4
- //#region src/entities/product.ts
5
- /**
6
- * Product status enum.
7
- */
8
- const ProductStatusEnum = defineEntityEnum({
9
- name: "ProductStatus",
10
- values: [
11
- "DRAFT",
12
- "PENDING_REVIEW",
13
- "ACTIVE",
14
- "OUT_OF_STOCK",
15
- "DISCONTINUED",
16
- "REJECTED"
17
- ],
18
- schema: "marketplace",
19
- description: "Status of a product listing."
20
- });
21
- /**
22
- * Product type enum.
23
- */
24
- const ProductTypeEnum = defineEntityEnum({
25
- name: "ProductType",
26
- values: [
27
- "PHYSICAL",
28
- "DIGITAL",
29
- "SERVICE",
30
- "SUBSCRIPTION"
31
- ],
32
- schema: "marketplace",
33
- description: "Type of product."
34
- });
35
- /**
36
- * Product entity - an item for sale on the marketplace.
37
- */
38
- const ProductEntity = defineEntity({
39
- name: "Product",
40
- description: "A product listing on the marketplace.",
41
- schema: "marketplace",
42
- map: "product",
43
- fields: {
44
- id: field.id({ description: "Unique product ID" }),
45
- storeId: field.foreignKey(),
46
- name: field.string({ description: "Product name" }),
47
- slug: field.string({ description: "URL-friendly identifier" }),
48
- description: field.string({ isOptional: true }),
49
- shortDescription: field.string({ isOptional: true }),
50
- status: field.enum("ProductStatus", { default: "DRAFT" }),
51
- type: field.enum("ProductType", { default: "PHYSICAL" }),
52
- price: field.decimal({ description: "Base price" }),
53
- compareAtPrice: field.decimal({
54
- isOptional: true,
55
- description: "Original price for showing discounts"
56
- }),
57
- currency: field.string({ default: "\"USD\"" }),
58
- sku: field.string({ isOptional: true }),
59
- barcode: field.string({ isOptional: true }),
60
- quantity: field.int({ default: 0 }),
61
- trackInventory: field.boolean({ default: true }),
62
- allowBackorder: field.boolean({ default: false }),
63
- lowStockThreshold: field.int({ default: 5 }),
64
- weight: field.decimal({ isOptional: true }),
65
- weightUnit: field.string({ default: "\"kg\"" }),
66
- categoryId: field.string({ isOptional: true }),
67
- tags: field.string({ isArray: true }),
68
- primaryImageId: field.string({ isOptional: true }),
69
- seoTitle: field.string({ isOptional: true }),
70
- seoDescription: field.string({ isOptional: true }),
71
- attributes: field.json({
72
- isOptional: true,
73
- description: "Custom product attributes"
74
- }),
75
- reviewCount: field.int({ default: 0 }),
76
- averageRating: field.decimal({ default: 0 }),
77
- totalSold: field.int({ default: 0 }),
78
- createdAt: field.createdAt(),
79
- updatedAt: field.updatedAt(),
80
- publishedAt: field.dateTime({ isOptional: true }),
81
- store: field.belongsTo("Store", ["storeId"], ["id"]),
82
- variants: field.hasMany("ProductVariant"),
83
- orderItems: field.hasMany("OrderItem"),
84
- reviews: field.hasMany("Review")
85
- },
86
- indexes: [
87
- index.unique(["storeId", "slug"]),
88
- index.on(["storeId", "status"]),
89
- index.on(["status", "publishedAt"]),
90
- index.on(["categoryId", "status"]),
91
- index.on(["averageRating"]),
92
- index.on(["totalSold"]),
93
- index.on(["price"])
94
- ],
95
- enums: [ProductStatusEnum, ProductTypeEnum]
96
- });
97
- /**
98
- * Product variant entity - variations of a product (size, color, etc.).
99
- */
100
- const ProductVariantEntity = defineEntity({
101
- name: "ProductVariant",
102
- description: "A variant of a product with specific options.",
103
- schema: "marketplace",
104
- map: "product_variant",
105
- fields: {
106
- id: field.id(),
107
- productId: field.foreignKey(),
108
- name: field.string({ description: "Variant name (e.g., \"Large / Blue\")" }),
109
- options: field.json({ description: "Variant options (e.g., {size: \"L\", color: \"Blue\"})" }),
110
- price: field.decimal({ description: "Variant-specific price" }),
111
- compareAtPrice: field.decimal({ isOptional: true }),
112
- sku: field.string({ isOptional: true }),
113
- barcode: field.string({ isOptional: true }),
114
- quantity: field.int({ default: 0 }),
115
- imageId: field.string({ isOptional: true }),
116
- isActive: field.boolean({ default: true }),
117
- position: field.int({ default: 0 }),
118
- createdAt: field.createdAt(),
119
- updatedAt: field.updatedAt(),
120
- product: field.belongsTo("Product", ["productId"], ["id"], { onDelete: "Cascade" })
121
- },
122
- indexes: [
123
- index.on(["productId", "sku"]),
124
- index.on(["productId", "position"]),
125
- index.on(["barcode"])
126
- ]
127
- });
128
- /**
129
- * Category entity - product categorization.
130
- */
131
- const CategoryEntity = defineEntity({
132
- name: "Category",
133
- description: "Product category for organization.",
134
- schema: "marketplace",
135
- map: "category",
136
- fields: {
137
- id: field.id(),
138
- name: field.string(),
139
- slug: field.string(),
140
- description: field.string({ isOptional: true }),
141
- parentId: field.string({ isOptional: true }),
142
- path: field.string({ description: "Full path for hierarchical queries" }),
143
- level: field.int({ default: 0 }),
144
- position: field.int({ default: 0 }),
145
- imageId: field.string({ isOptional: true }),
146
- isActive: field.boolean({ default: true }),
147
- createdAt: field.createdAt(),
148
- updatedAt: field.updatedAt(),
149
- parent: field.belongsTo("Category", ["parentId"], ["id"]),
150
- children: field.hasMany("Category")
151
- },
152
- indexes: [
153
- index.unique(["slug"]),
154
- index.on(["parentId", "position"]),
155
- index.on(["path"]),
156
- index.on(["isActive"])
157
- ]
158
- });
159
-
160
- //#endregion
161
- export { CategoryEntity, ProductEntity, ProductStatusEnum, ProductTypeEnum, ProductVariantEntity };
1
+ import{defineEntity as e,defineEntityEnum as t,field as n,index as r}from"@lssm/lib.schema";const i=t({name:`ProductStatus`,values:[`DRAFT`,`PENDING_REVIEW`,`ACTIVE`,`OUT_OF_STOCK`,`DISCONTINUED`,`REJECTED`],schema:`marketplace`,description:`Status of a product listing.`}),a=t({name:`ProductType`,values:[`PHYSICAL`,`DIGITAL`,`SERVICE`,`SUBSCRIPTION`],schema:`marketplace`,description:`Type of product.`}),o=e({name:`Product`,description:`A product listing on the marketplace.`,schema:`marketplace`,map:`product`,fields:{id:n.id({description:`Unique product ID`}),storeId:n.foreignKey(),name:n.string({description:`Product name`}),slug:n.string({description:`URL-friendly identifier`}),description:n.string({isOptional:!0}),shortDescription:n.string({isOptional:!0}),status:n.enum(`ProductStatus`,{default:`DRAFT`}),type:n.enum(`ProductType`,{default:`PHYSICAL`}),price:n.decimal({description:`Base price`}),compareAtPrice:n.decimal({isOptional:!0,description:`Original price for showing discounts`}),currency:n.string({default:`"USD"`}),sku:n.string({isOptional:!0}),barcode:n.string({isOptional:!0}),quantity:n.int({default:0}),trackInventory:n.boolean({default:!0}),allowBackorder:n.boolean({default:!1}),lowStockThreshold:n.int({default:5}),weight:n.decimal({isOptional:!0}),weightUnit:n.string({default:`"kg"`}),categoryId:n.string({isOptional:!0}),tags:n.string({isArray:!0}),primaryImageId:n.string({isOptional:!0}),seoTitle:n.string({isOptional:!0}),seoDescription:n.string({isOptional:!0}),attributes:n.json({isOptional:!0,description:`Custom product attributes`}),reviewCount:n.int({default:0}),averageRating:n.decimal({default:0}),totalSold:n.int({default:0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),publishedAt:n.dateTime({isOptional:!0}),store:n.belongsTo(`Store`,[`storeId`],[`id`]),variants:n.hasMany(`ProductVariant`),orderItems:n.hasMany(`OrderItem`),reviews:n.hasMany(`Review`)},indexes:[r.unique([`storeId`,`slug`]),r.on([`storeId`,`status`]),r.on([`status`,`publishedAt`]),r.on([`categoryId`,`status`]),r.on([`averageRating`]),r.on([`totalSold`]),r.on([`price`])],enums:[i,a]}),s=e({name:`ProductVariant`,description:`A variant of a product with specific options.`,schema:`marketplace`,map:`product_variant`,fields:{id:n.id(),productId:n.foreignKey(),name:n.string({description:`Variant name (e.g., "Large / Blue")`}),options:n.json({description:`Variant options (e.g., {size: "L", color: "Blue"})`}),price:n.decimal({description:`Variant-specific price`}),compareAtPrice:n.decimal({isOptional:!0}),sku:n.string({isOptional:!0}),barcode:n.string({isOptional:!0}),quantity:n.int({default:0}),imageId:n.string({isOptional:!0}),isActive:n.boolean({default:!0}),position:n.int({default:0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),product:n.belongsTo(`Product`,[`productId`],[`id`],{onDelete:`Cascade`})},indexes:[r.on([`productId`,`sku`]),r.on([`productId`,`position`]),r.on([`barcode`])]}),c=e({name:`Category`,description:`Product category for organization.`,schema:`marketplace`,map:`category`,fields:{id:n.id(),name:n.string(),slug:n.string(),description:n.string({isOptional:!0}),parentId:n.string({isOptional:!0}),path:n.string({description:`Full path for hierarchical queries`}),level:n.int({default:0}),position:n.int({default:0}),imageId:n.string({isOptional:!0}),isActive:n.boolean({default:!0}),createdAt:n.createdAt(),updatedAt:n.updatedAt(),parent:n.belongsTo(`Category`,[`parentId`],[`id`]),children:n.hasMany(`Category`)},indexes:[r.unique([`slug`]),r.on([`parentId`,`position`]),r.on([`path`]),r.on([`isActive`])]});export{c as CategoryEntity,o as ProductEntity,i as ProductStatusEnum,a as ProductTypeEnum,s as ProductVariantEntity};