@lssm/example.marketplace 0.0.0-canary-20251217083314 → 1.41.1
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/docs/index.js +1 -1
- package/dist/docs/marketplace.docblock.js +5 -61
- package/dist/entities/index.js +1 -45
- package/dist/entities/order.js +1 -173
- package/dist/entities/payout.js +1 -162
- package/dist/entities/product.js +1 -161
- package/dist/entities/review.js +1 -152
- package/dist/entities/store.js +1 -110
- package/dist/example.js +1 -50
- package/dist/index.js +1 -27
- package/dist/marketplace.feature.js +1 -308
- package/dist/order/index.js +1 -6
- package/dist/order/order.contracts.js +1 -74
- package/dist/order/order.enum.js +1 -22
- package/dist/order/order.event.js +1 -193
- package/dist/order/order.presentation.js +1 -72
- package/dist/order/order.schema.js +1 -156
- package/dist/payout/index.js +1 -6
- package/dist/payout/payout.contracts.js +1 -32
- package/dist/payout/payout.enum.js +1 -17
- package/dist/payout/payout.event.js +1 -84
- package/dist/payout/payout.presentation.js +1 -50
- package/dist/payout/payout.schema.js +1 -117
- package/dist/product/index.js +1 -6
- package/dist/product/product.contracts.js +1 -65
- package/dist/product/product.enum.js +1 -18
- package/dist/product/product.event.js +1 -103
- package/dist/product/product.presentation.js +1 -72
- package/dist/product/product.schema.js +1 -177
- package/dist/review/index.js +1 -6
- package/dist/review/review.contracts.js +1 -65
- package/dist/review/review.enum.js +1 -16
- package/dist/review/review.event.js +1 -76
- package/dist/review/review.presentation.js +1 -50
- package/dist/review/review.schema.js +1 -157
- package/dist/store/index.js +1 -6
- package/dist/store/store.contracts.js +1 -41
- package/dist/store/store.enum.js +1 -16
- package/dist/store/store.event.js +1 -72
- package/dist/store/store.presentation.js +1 -50
- package/dist/store/store.schema.js +1 -94
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +53 -53
- package/dist/docs/index.d.ts +0 -1
- package/dist/docs/marketplace.docblock.d.ts +0 -1
- package/dist/entities/index.d.ts +0 -308
- package/dist/entities/order.d.ts +0 -104
- package/dist/entities/payout.d.ts +0 -91
- package/dist/entities/product.d.ts +0 -92
- package/dist/entities/review.d.ts +0 -82
- package/dist/entities/store.d.ts +0 -59
- package/dist/example.d.ts +0 -39
- package/dist/index.d.ts +0 -21
- package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
- package/dist/libs/contracts/dist/client/index.js +0 -5
- package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
- package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
- package/dist/libs/contracts/dist/client/react/index.js +0 -4
- package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
- package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
- package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/index.js +0 -29
- package/dist/libs/contracts/dist/docs/presentations.js +0 -71
- package/dist/libs/contracts/dist/docs/registry.js +0 -44
- package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
- package/dist/libs/contracts/dist/events.js +0 -10
- package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
- package/dist/libs/contracts/dist/index.js +0 -71
- package/dist/libs/contracts/dist/install.js +0 -2
- package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
- package/dist/libs/contracts/dist/integrations/index.js +0 -18
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
- package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
- package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
- package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
- package/dist/libs/contracts/dist/jsonschema.js +0 -1
- package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
- package/dist/libs/contracts/dist/knowledge/index.js +0 -7
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
- package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
- package/dist/libs/contracts/dist/llm/exporters.js +0 -19
- package/dist/libs/contracts/dist/llm/index.js +0 -2
- package/dist/libs/contracts/dist/llm/prompts.js +0 -1
- package/dist/libs/contracts/dist/onboarding-base.js +0 -196
- package/dist/libs/contracts/dist/openapi.js +0 -1
- package/dist/libs/contracts/dist/ownership.js +0 -21
- package/dist/libs/contracts/dist/presentations.js +0 -1
- package/dist/libs/contracts/dist/presentations.v2.js +0 -11
- package/dist/libs/contracts/dist/prompt.js +0 -1
- package/dist/libs/contracts/dist/promptRegistry.js +0 -1
- package/dist/libs/contracts/dist/regenerator/index.js +0 -1
- package/dist/libs/contracts/dist/regenerator/service.js +0 -6
- package/dist/libs/contracts/dist/registry.js +0 -2
- package/dist/libs/contracts/dist/resources.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
- package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
- package/dist/libs/contracts/dist/server/index.js +0 -8
- package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
- package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
- package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
- package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
- package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
- package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
- package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
- package/dist/libs/contracts/dist/server/rest-express.js +0 -1
- package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
- package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
- package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
- package/dist/libs/contracts/dist/spec.js +0 -34
- package/dist/libs/contracts/dist/telemetry/index.js +0 -1
- package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
- package/dist/libs/contracts/dist/tests/index.js +0 -1
- package/dist/libs/contracts/dist/tests/runner.js +0 -2
- package/dist/libs/contracts/dist/workflow/index.js +0 -1
- package/dist/libs/contracts/dist/workflow/runner.js +0 -1
- package/dist/libs/schema/dist/EnumType.js +0 -56
- package/dist/libs/schema/dist/FieldType.js +0 -49
- package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
- package/dist/libs/schema/dist/entity/index.js +0 -2
- package/dist/libs/schema/dist/entity/types.js +0 -1
- package/dist/libs/schema/dist/index.js +0 -6
- package/dist/marketplace.feature.d.ts +0 -11
- package/dist/order/index.d.ts +0 -5
- package/dist/order/order.contracts.d.ts +0 -367
- package/dist/order/order.enum.d.ts +0 -9
- package/dist/order/order.event.d.ts +0 -144
- package/dist/order/order.presentation.d.ts +0 -8
- package/dist/order/order.schema.d.ts +0 -164
- package/dist/payout/index.d.ts +0 -5
- package/dist/payout/payout.contracts.d.ts +0 -96
- package/dist/payout/payout.enum.d.ts +0 -9
- package/dist/payout/payout.event.d.ts +0 -62
- package/dist/payout/payout.presentation.d.ts +0 -7
- package/dist/payout/payout.schema.d.ts +0 -156
- package/dist/product/index.d.ts +0 -5
- package/dist/product/product.contracts.d.ts +0 -272
- package/dist/product/product.enum.d.ts +0 -9
- package/dist/product/product.event.d.ts +0 -72
- package/dist/product/product.presentation.d.ts +0 -8
- package/dist/product/product.schema.d.ts +0 -217
- package/dist/review/index.d.ts +0 -5
- package/dist/review/review.contracts.d.ts +0 -236
- package/dist/review/review.enum.d.ts +0 -9
- package/dist/review/review.event.d.ts +0 -54
- package/dist/review/review.presentation.d.ts +0 -7
- package/dist/review/review.schema.d.ts +0 -189
- package/dist/store/index.d.ts +0 -5
- package/dist/store/store.contracts.d.ts +0 -130
- package/dist/store/store.enum.d.ts +0 -9
- package/dist/store/store.event.d.ts +0 -50
- package/dist/store/store.presentation.d.ts +0 -7
- package/dist/store/store.schema.d.ts +0 -83
package/dist/docs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import"./marketplace.docblock.js";
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
import
|
|
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.`}]);
|
package/dist/entities/index.js
CHANGED
|
@@ -1,45 +1 @@
|
|
|
1
|
-
import {
|
|
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};
|
package/dist/entities/order.js
CHANGED
|
@@ -1,173 +1 @@
|
|
|
1
|
-
import {
|
|
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};
|
package/dist/entities/payout.js
CHANGED
|
@@ -1,162 +1 @@
|
|
|
1
|
-
import {
|
|
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};
|
package/dist/entities/product.js
CHANGED
|
@@ -1,161 +1 @@
|
|
|
1
|
-
import {
|
|
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};
|