@86d-app/reviews 0.0.22 → 0.0.24

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 (131) hide show
  1. package/dist/modules/reviews/src/__tests__/controllers.test.js +937 -0
  2. package/dist/modules/reviews/src/__tests__/endpoint-security.test.js +438 -0
  3. package/dist/modules/reviews/src/__tests__/new-features.test.js +467 -0
  4. package/dist/modules/reviews/src/__tests__/service-impl.test.js +1042 -0
  5. package/dist/modules/reviews/src/__tests__/store-endpoints.test.js +456 -0
  6. package/dist/{admin/components/index.d.ts → modules/reviews/src/admin/components/index.js} +0 -1
  7. package/dist/modules/reviews/src/admin/components/review-analytics.jsx +141 -0
  8. package/dist/modules/reviews/src/admin/components/review-list.jsx +181 -0
  9. package/dist/modules/reviews/src/admin/components/review-moderation.jsx +297 -0
  10. package/dist/modules/reviews/src/admin/endpoints/approve-review.js +11 -0
  11. package/dist/modules/reviews/src/admin/endpoints/delete-review.js +12 -0
  12. package/dist/modules/reviews/src/admin/endpoints/get-review.js +11 -0
  13. package/dist/modules/reviews/src/admin/endpoints/index.js +26 -0
  14. package/dist/modules/reviews/src/admin/endpoints/list-reports.js +19 -0
  15. package/dist/modules/reviews/src/admin/endpoints/list-review-requests.js +17 -0
  16. package/dist/modules/reviews/src/admin/endpoints/list-reviews.js +19 -0
  17. package/dist/modules/reviews/src/admin/endpoints/reject-review.js +11 -0
  18. package/dist/modules/reviews/src/admin/endpoints/respond-review.js +14 -0
  19. package/dist/modules/reviews/src/admin/endpoints/review-analytics.js +8 -0
  20. package/dist/modules/reviews/src/admin/endpoints/review-request-stats.js +6 -0
  21. package/dist/modules/reviews/src/admin/endpoints/send-review-request.js +31 -0
  22. package/dist/modules/reviews/src/admin/endpoints/update-report.js +14 -0
  23. package/dist/modules/reviews/src/index.js +57 -0
  24. package/dist/modules/reviews/src/schema.js +63 -0
  25. package/dist/modules/reviews/src/service-impl.js +349 -0
  26. package/dist/modules/reviews/src/service.js +1 -0
  27. package/dist/modules/reviews/src/store/components/_hooks.js +10 -0
  28. package/dist/modules/reviews/src/store/components/_utils.js +17 -0
  29. package/dist/modules/reviews/src/store/components/distribution-bars.jsx +5 -0
  30. package/dist/modules/reviews/src/store/components/index.jsx +17 -0
  31. package/dist/modules/reviews/src/store/components/product-reviews.jsx +94 -0
  32. package/dist/modules/reviews/src/store/components/review-card.jsx +44 -0
  33. package/dist/modules/reviews/src/store/components/review-form.jsx +39 -0
  34. package/dist/modules/reviews/src/store/components/reviews-summary.jsx +15 -0
  35. package/dist/modules/reviews/src/store/components/star-display.jsx +12 -0
  36. package/dist/modules/reviews/src/store/components/star-picker.jsx +7 -0
  37. package/dist/modules/reviews/src/store/endpoints/index.js +12 -0
  38. package/dist/modules/reviews/src/store/endpoints/list-my-reviews.js +29 -0
  39. package/dist/modules/reviews/src/store/endpoints/list-product-reviews.js +24 -0
  40. package/dist/modules/reviews/src/store/endpoints/mark-helpful.js +29 -0
  41. package/dist/modules/reviews/src/store/endpoints/report-review.js +30 -0
  42. package/dist/modules/reviews/src/store/endpoints/submit-review.js +46 -0
  43. package/package.json +1 -1
  44. package/src/__tests__/store-endpoints.test.ts +648 -0
  45. package/src/admin/components/review-list.tsx +3 -2
  46. package/src/admin/components/review-moderation.tsx +3 -2
  47. package/src/service-impl.ts +17 -26
  48. package/src/service.ts +18 -18
  49. package/src/store/components/_utils.ts +3 -2
  50. package/src/store/components/product-reviews.tsx +38 -6
  51. package/dist/__tests__/controllers.test.d.ts +0 -2
  52. package/dist/__tests__/controllers.test.d.ts.map +0 -1
  53. package/dist/__tests__/endpoint-security.test.d.ts +0 -2
  54. package/dist/__tests__/endpoint-security.test.d.ts.map +0 -1
  55. package/dist/__tests__/new-features.test.d.ts +0 -2
  56. package/dist/__tests__/new-features.test.d.ts.map +0 -1
  57. package/dist/__tests__/service-impl.test.d.ts +0 -2
  58. package/dist/__tests__/service-impl.test.d.ts.map +0 -1
  59. package/dist/admin/components/index.d.ts.map +0 -1
  60. package/dist/admin/components/review-analytics.d.ts +0 -2
  61. package/dist/admin/components/review-analytics.d.ts.map +0 -1
  62. package/dist/admin/components/review-list.d.ts +0 -2
  63. package/dist/admin/components/review-list.d.ts.map +0 -1
  64. package/dist/admin/components/review-moderation.d.ts +0 -6
  65. package/dist/admin/components/review-moderation.d.ts.map +0 -1
  66. package/dist/admin/endpoints/approve-review.d.ts +0 -16
  67. package/dist/admin/endpoints/approve-review.d.ts.map +0 -1
  68. package/dist/admin/endpoints/delete-review.d.ts +0 -16
  69. package/dist/admin/endpoints/delete-review.d.ts.map +0 -1
  70. package/dist/admin/endpoints/get-review.d.ts +0 -16
  71. package/dist/admin/endpoints/get-review.d.ts.map +0 -1
  72. package/dist/admin/endpoints/index.d.ts +0 -167
  73. package/dist/admin/endpoints/index.d.ts.map +0 -1
  74. package/dist/admin/endpoints/list-reports.d.ts +0 -17
  75. package/dist/admin/endpoints/list-reports.d.ts.map +0 -1
  76. package/dist/admin/endpoints/list-review-requests.d.ts +0 -11
  77. package/dist/admin/endpoints/list-review-requests.d.ts.map +0 -1
  78. package/dist/admin/endpoints/list-reviews.d.ts +0 -18
  79. package/dist/admin/endpoints/list-reviews.d.ts.map +0 -1
  80. package/dist/admin/endpoints/reject-review.d.ts +0 -16
  81. package/dist/admin/endpoints/reject-review.d.ts.map +0 -1
  82. package/dist/admin/endpoints/respond-review.d.ts +0 -19
  83. package/dist/admin/endpoints/respond-review.d.ts.map +0 -1
  84. package/dist/admin/endpoints/review-analytics.d.ts +0 -6
  85. package/dist/admin/endpoints/review-analytics.d.ts.map +0 -1
  86. package/dist/admin/endpoints/review-request-stats.d.ts +0 -6
  87. package/dist/admin/endpoints/review-request-stats.d.ts.map +0 -1
  88. package/dist/admin/endpoints/send-review-request.d.ts +0 -23
  89. package/dist/admin/endpoints/send-review-request.d.ts.map +0 -1
  90. package/dist/admin/endpoints/update-report.d.ts +0 -22
  91. package/dist/admin/endpoints/update-report.d.ts.map +0 -1
  92. package/dist/index.d.ts +0 -8
  93. package/dist/index.d.ts.map +0 -1
  94. package/dist/schema.d.ts +0 -136
  95. package/dist/schema.d.ts.map +0 -1
  96. package/dist/service-impl.d.ts +0 -6
  97. package/dist/service-impl.d.ts.map +0 -1
  98. package/dist/service.d.ts +0 -149
  99. package/dist/service.d.ts.map +0 -1
  100. package/dist/store/components/_hooks.d.ts +0 -6
  101. package/dist/store/components/_hooks.d.ts.map +0 -1
  102. package/dist/store/components/_utils.d.ts +0 -3
  103. package/dist/store/components/_utils.d.ts.map +0 -1
  104. package/dist/store/components/distribution-bars.d.ts +0 -5
  105. package/dist/store/components/distribution-bars.d.ts.map +0 -1
  106. package/dist/store/components/index.d.ts +0 -18
  107. package/dist/store/components/index.d.ts.map +0 -1
  108. package/dist/store/components/product-reviews.d.ts +0 -5
  109. package/dist/store/components/product-reviews.d.ts.map +0 -1
  110. package/dist/store/components/review-card.d.ts +0 -18
  111. package/dist/store/components/review-card.d.ts.map +0 -1
  112. package/dist/store/components/review-form.d.ts +0 -5
  113. package/dist/store/components/review-form.d.ts.map +0 -1
  114. package/dist/store/components/reviews-summary.d.ts +0 -4
  115. package/dist/store/components/reviews-summary.d.ts.map +0 -1
  116. package/dist/store/components/star-display.d.ts +0 -5
  117. package/dist/store/components/star-display.d.ts.map +0 -1
  118. package/dist/store/components/star-picker.d.ts +0 -5
  119. package/dist/store/components/star-picker.d.ts.map +0 -1
  120. package/dist/store/endpoints/index.d.ts +0 -116
  121. package/dist/store/endpoints/index.d.ts.map +0 -1
  122. package/dist/store/endpoints/list-my-reviews.d.ts +0 -30
  123. package/dist/store/endpoints/list-my-reviews.d.ts.map +0 -1
  124. package/dist/store/endpoints/list-product-reviews.d.ts +0 -23
  125. package/dist/store/endpoints/list-product-reviews.d.ts.map +0 -1
  126. package/dist/store/endpoints/mark-helpful.d.ts +0 -18
  127. package/dist/store/endpoints/mark-helpful.d.ts.map +0 -1
  128. package/dist/store/endpoints/report-review.d.ts +0 -27
  129. package/dist/store/endpoints/report-review.d.ts.map +0 -1
  130. package/dist/store/endpoints/submit-review.d.ts +0 -25
  131. package/dist/store/endpoints/submit-review.d.ts.map +0 -1
@@ -1,16 +0,0 @@
1
- import { z } from "@86d-app/core";
2
- export declare const rejectReview: import("better-call").StrictEndpoint<"/admin/reviews/:id/reject", {
3
- method: "PUT";
4
- params: z.ZodObject<{
5
- id: z.ZodString;
6
- }, z.core.$strip>;
7
- }, {
8
- error: string;
9
- status: number;
10
- review?: never;
11
- } | {
12
- review: import("../..").Review;
13
- error?: never;
14
- status?: never;
15
- }>;
16
- //# sourceMappingURL=reject-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reject-review.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/reject-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AAGvD,eAAO,MAAM,YAAY;;;;;;;;;;;;;EAexB,CAAC"}
@@ -1,19 +0,0 @@
1
- import { z } from "@86d-app/core";
2
- export declare const respondReview: import("better-call").StrictEndpoint<"/admin/reviews/:id/respond", {
3
- method: "POST";
4
- params: z.ZodObject<{
5
- id: z.ZodString;
6
- }, z.core.$strip>;
7
- body: z.ZodObject<{
8
- response: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
9
- }, z.core.$strip>;
10
- }, {
11
- error: string;
12
- status: number;
13
- review?: never;
14
- } | {
15
- review: import("../..").Review;
16
- error?: never;
17
- status?: never;
18
- }>;
19
- //# sourceMappingURL=respond-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"respond-review.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/respond-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,CAAC,EAAE,MAAM,eAAe,CAAC;AAGrE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;EAkBzB,CAAC"}
@@ -1,6 +0,0 @@
1
- export declare const reviewAnalytics: import("better-call").StrictEndpoint<"/admin/reviews/analytics", {
2
- method: "GET";
3
- }, {
4
- analytics: import("../..").ReviewAnalytics;
5
- }>;
6
- //# sourceMappingURL=review-analytics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-analytics.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/review-analytics.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;;;;EAU3B,CAAC"}
@@ -1,6 +0,0 @@
1
- export declare const reviewRequestStats: import("better-call").StrictEndpoint<"/admin/reviews/request-stats", {
2
- method: "GET";
3
- }, {
4
- stats: import("../..").ReviewRequestStats;
5
- }>;
6
- //# sourceMappingURL=review-request-stats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-request-stats.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/review-request-stats.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;EAQ9B,CAAC"}
@@ -1,23 +0,0 @@
1
- import { z } from "@86d-app/core";
2
- export declare const sendReviewRequest: import("better-call").StrictEndpoint<"/admin/reviews/send-request", {
3
- method: "POST";
4
- body: z.ZodObject<{
5
- orderId: z.ZodString;
6
- orderNumber: z.ZodString;
7
- email: z.ZodString;
8
- customerName: z.ZodString;
9
- items: z.ZodArray<z.ZodObject<{
10
- productId: z.ZodString;
11
- name: z.ZodString;
12
- }, z.core.$strip>>;
13
- }, z.core.$strip>;
14
- }, {
15
- error: string;
16
- status: number;
17
- request?: never;
18
- } | {
19
- request: import("../..").ReviewRequest;
20
- error?: never;
21
- status?: never;
22
- }>;
23
- //# sourceMappingURL=send-review-request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send-review-request.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/send-review-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AAGvD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;EAqC7B,CAAC"}
@@ -1,22 +0,0 @@
1
- import { z } from "@86d-app/core";
2
- export declare const updateReport: import("better-call").StrictEndpoint<"/admin/reviews/reports/:id/update", {
3
- method: "PUT";
4
- params: z.ZodObject<{
5
- id: z.ZodString;
6
- }, z.core.$strip>;
7
- body: z.ZodObject<{
8
- status: z.ZodEnum<{
9
- resolved: "resolved";
10
- dismissed: "dismissed";
11
- }>;
12
- }, z.core.$strip>;
13
- }, {
14
- error: string;
15
- status: number;
16
- report?: never;
17
- } | {
18
- report: import("../..").ReviewReport;
19
- error?: never;
20
- status?: never;
21
- }>;
22
- //# sourceMappingURL=update-report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-report.d.ts","sourceRoot":"","sources":["../../../src/admin/endpoints/update-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AAGvD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;EAkBxB,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { Module, ModuleConfig } from "@86d-app/core";
2
- export type { RatingSummary, ReportStatus, Review, ReviewAnalytics, ReviewController, ReviewImage, ReviewReport, ReviewRequest, ReviewRequestStats, ReviewSortBy, ReviewStatus, ReviewVote, } from "./service";
3
- export interface ReviewsOptions extends ModuleConfig {
4
- /** Auto-approve reviews (no moderation queue) */
5
- autoApprove?: string;
6
- }
7
- export default function reviews(options?: ReviewsOptions): Module;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAMzE,YAAY,EACX,aAAa,EACb,YAAY,EACZ,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,GACV,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,cAAe,SAAQ,YAAY;IACnD,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAoDhE"}
package/dist/schema.d.ts DELETED
@@ -1,136 +0,0 @@
1
- export declare const reviewsSchema: {
2
- review: {
3
- fields: {
4
- id: {
5
- type: "string";
6
- required: true;
7
- };
8
- productId: {
9
- type: "string";
10
- required: true;
11
- };
12
- customerId: {
13
- type: "string";
14
- required: false;
15
- };
16
- authorName: {
17
- type: "string";
18
- required: true;
19
- };
20
- authorEmail: {
21
- type: "string";
22
- required: true;
23
- };
24
- rating: {
25
- type: "number";
26
- required: true;
27
- };
28
- title: {
29
- type: "string";
30
- required: false;
31
- };
32
- body: {
33
- type: "string";
34
- required: true;
35
- };
36
- status: {
37
- type: "string";
38
- required: true;
39
- defaultValue: string;
40
- };
41
- isVerifiedPurchase: {
42
- type: "boolean";
43
- required: true;
44
- defaultValue: false;
45
- };
46
- helpfulCount: {
47
- type: "number";
48
- required: true;
49
- defaultValue: number;
50
- };
51
- images: {
52
- type: "json";
53
- required: false;
54
- };
55
- merchantResponse: {
56
- type: "string";
57
- required: false;
58
- };
59
- merchantResponseAt: {
60
- type: "date";
61
- required: false;
62
- };
63
- moderationNote: {
64
- type: "string";
65
- required: false;
66
- };
67
- createdAt: {
68
- type: "date";
69
- required: true;
70
- defaultValue: () => Date;
71
- };
72
- updatedAt: {
73
- type: "date";
74
- required: true;
75
- defaultValue: () => Date;
76
- onUpdate: () => Date;
77
- };
78
- };
79
- };
80
- reviewVote: {
81
- fields: {
82
- id: {
83
- type: "string";
84
- required: true;
85
- };
86
- reviewId: {
87
- type: "string";
88
- required: true;
89
- };
90
- voterId: {
91
- type: "string";
92
- required: true;
93
- };
94
- createdAt: {
95
- type: "date";
96
- required: true;
97
- defaultValue: () => Date;
98
- };
99
- };
100
- };
101
- reviewReport: {
102
- fields: {
103
- id: {
104
- type: "string";
105
- required: true;
106
- };
107
- reviewId: {
108
- type: "string";
109
- required: true;
110
- };
111
- reporterId: {
112
- type: "string";
113
- required: false;
114
- };
115
- reason: {
116
- type: "string";
117
- required: true;
118
- };
119
- details: {
120
- type: "string";
121
- required: false;
122
- };
123
- status: {
124
- type: "string";
125
- required: true;
126
- defaultValue: string;
127
- };
128
- createdAt: {
129
- type: "date";
130
- required: true;
131
- defaultValue: () => Date;
132
- };
133
- };
134
- };
135
- };
136
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DF,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { ModuleDataService } from "@86d-app/core";
2
- import type { ReviewController } from "./service";
3
- export declare function createReviewController(data: ModuleDataService, options?: {
4
- autoApprove?: boolean;
5
- }): ReviewController;
6
- //# sourceMappingURL=service-impl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-impl.d.ts","sourceRoot":"","sources":["../src/service-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAEX,gBAAgB,EAMhB,MAAM,WAAW,CAAC;AAwBnB,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,gBAAgB,CAsXlB"}
package/dist/service.d.ts DELETED
@@ -1,149 +0,0 @@
1
- import type { ModuleController } from "@86d-app/core";
2
- export type ReviewStatus = "pending" | "approved" | "rejected";
3
- export type ReportStatus = "pending" | "resolved" | "dismissed";
4
- export type ReviewSortBy = "recent" | "oldest" | "highest" | "lowest" | "helpful";
5
- export interface ReviewImage {
6
- url: string;
7
- caption?: string | undefined;
8
- }
9
- export interface Review {
10
- id: string;
11
- productId: string;
12
- customerId?: string | undefined;
13
- authorName: string;
14
- authorEmail: string;
15
- rating: number;
16
- title?: string | undefined;
17
- body: string;
18
- status: ReviewStatus;
19
- isVerifiedPurchase: boolean;
20
- helpfulCount: number;
21
- images?: ReviewImage[] | undefined;
22
- merchantResponse?: string | undefined;
23
- merchantResponseAt?: Date | undefined;
24
- moderationNote?: string | undefined;
25
- createdAt: Date;
26
- updatedAt: Date;
27
- }
28
- export interface RatingSummary {
29
- average: number;
30
- count: number;
31
- distribution: Record<string, number>;
32
- }
33
- export interface ReviewVote {
34
- id: string;
35
- reviewId: string;
36
- voterId: string;
37
- createdAt: Date;
38
- }
39
- export interface ReviewReport {
40
- id: string;
41
- reviewId: string;
42
- reporterId?: string | undefined;
43
- reason: string;
44
- details?: string | undefined;
45
- status: ReportStatus;
46
- createdAt: Date;
47
- }
48
- export interface ReviewController extends ModuleController {
49
- createReview(params: {
50
- productId: string;
51
- authorName: string;
52
- authorEmail: string;
53
- rating: number;
54
- title?: string | undefined;
55
- body: string;
56
- customerId?: string | undefined;
57
- isVerifiedPurchase?: boolean | undefined;
58
- images?: ReviewImage[] | undefined;
59
- }): Promise<Review>;
60
- getReview(id: string): Promise<Review | null>;
61
- listReviewsByProduct(productId: string, params?: {
62
- approvedOnly?: boolean | undefined;
63
- take?: number | undefined;
64
- skip?: number | undefined;
65
- sortBy?: ReviewSortBy | undefined;
66
- }): Promise<Review[]>;
67
- listReviews(params?: {
68
- productId?: string | undefined;
69
- status?: ReviewStatus | undefined;
70
- take?: number | undefined;
71
- skip?: number | undefined;
72
- }): Promise<Review[]>;
73
- updateReviewStatus(id: string, status: ReviewStatus, moderationNote?: string | undefined): Promise<Review | null>;
74
- deleteReview(id: string): Promise<boolean>;
75
- getProductRatingSummary(productId: string): Promise<RatingSummary>;
76
- addMerchantResponse(id: string, response: string): Promise<Review | null>;
77
- markHelpful(id: string): Promise<Review | null>;
78
- voteHelpful(reviewId: string, voterId: string): Promise<{
79
- review: Review;
80
- alreadyVoted: boolean;
81
- } | null>;
82
- getReviewAnalytics(): Promise<ReviewAnalytics>;
83
- createReviewRequest(params: {
84
- orderId: string;
85
- orderNumber: string;
86
- email: string;
87
- customerName: string;
88
- items: Array<{
89
- productId: string;
90
- name: string;
91
- }>;
92
- }): Promise<ReviewRequest>;
93
- getReviewRequest(orderId: string): Promise<ReviewRequest | null>;
94
- listReviewRequests(params?: {
95
- take?: number | undefined;
96
- skip?: number | undefined;
97
- }): Promise<ReviewRequest[]>;
98
- getReviewRequestStats(): Promise<ReviewRequestStats>;
99
- listReviewsByCustomer(customerId: string, params?: {
100
- status?: ReviewStatus | undefined;
101
- take?: number | undefined;
102
- skip?: number | undefined;
103
- }): Promise<{
104
- reviews: Review[];
105
- total: number;
106
- }>;
107
- hasReviewedProduct(customerId: string, productId: string): Promise<boolean>;
108
- reportReview(params: {
109
- reviewId: string;
110
- reporterId?: string | undefined;
111
- reason: string;
112
- details?: string | undefined;
113
- }): Promise<ReviewReport>;
114
- listReports(params?: {
115
- status?: ReportStatus | undefined;
116
- reviewId?: string | undefined;
117
- take?: number | undefined;
118
- skip?: number | undefined;
119
- }): Promise<ReviewReport[]>;
120
- updateReportStatus(id: string, status: ReportStatus): Promise<ReviewReport | null>;
121
- getReportCount(reviewId: string): Promise<number>;
122
- }
123
- export interface ReviewAnalytics {
124
- totalReviews: number;
125
- pendingCount: number;
126
- approvedCount: number;
127
- rejectedCount: number;
128
- averageRating: number;
129
- ratingsDistribution: Record<string, number>;
130
- withMerchantResponse: number;
131
- reportedCount: number;
132
- }
133
- export interface ReviewRequest {
134
- id: string;
135
- orderId: string;
136
- orderNumber: string;
137
- email: string;
138
- customerName: string;
139
- items: Array<{
140
- productId: string;
141
- name: string;
142
- }>;
143
- sentAt: Date;
144
- }
145
- export interface ReviewRequestStats {
146
- totalSent: number;
147
- uniqueOrders: number;
148
- }
149
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function useReviewsApi(): {
2
- submitReview: import("@86d-app/core/client").AnyEndpointHook;
3
- listProductReviews: import("@86d-app/core/client").AnyEndpointHook;
4
- markHelpful: import("@86d-app/core/client").AnyEndpointHook;
5
- };
6
- //# sourceMappingURL=_hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_hooks.d.ts","sourceRoot":"","sources":["../../../src/store/components/_hooks.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa;;;;EAQ5B"}
@@ -1,3 +0,0 @@
1
- export declare function formatDate(iso: string): string;
2
- export declare function extractError(error: Error | null, fallback: string): string;
3
- //# sourceMappingURL=_utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../../../src/store/components/_utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1E"}
@@ -1,5 +0,0 @@
1
- export declare function DistributionBars({ distribution, total, }: {
2
- distribution: Record<string, number>;
3
- total: number;
4
- }): import("react").JSX.Element;
5
- //# sourceMappingURL=distribution-bars.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"distribution-bars.d.ts","sourceRoot":"","sources":["../../../src/store/components/distribution-bars.tsx"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,EAChC,YAAY,EACZ,KAAK,GACL,EAAE;IACF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACd,+BAEA"}
@@ -1,18 +0,0 @@
1
- import { DistributionBars } from "./distribution-bars";
2
- import { ProductReviews } from "./product-reviews";
3
- import { ReviewCard } from "./review-card";
4
- import { ReviewForm } from "./review-form";
5
- import { ReviewsSummary } from "./reviews-summary";
6
- import { StarDisplay } from "./star-display";
7
- import { StarPicker } from "./star-picker";
8
- declare const _default: {
9
- ReviewsSummary: typeof ReviewsSummary;
10
- ProductReviews: typeof ProductReviews;
11
- StarDisplay: typeof StarDisplay;
12
- StarPicker: typeof StarPicker;
13
- ReviewCard: typeof ReviewCard;
14
- ReviewForm: typeof ReviewForm;
15
- DistributionBars: typeof DistributionBars;
16
- };
17
- export default _default;
18
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/components/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;;;;;;;;;AAE3C,wBAQ0B"}
@@ -1,5 +0,0 @@
1
- export declare function ProductReviews({ productId, title, }: {
2
- productId: string;
3
- title?: string | undefined;
4
- }): import("react").JSX.Element;
5
- //# sourceMappingURL=product-reviews.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"product-reviews.d.ts","sourceRoot":"","sources":["../../../src/store/components/product-reviews.tsx"],"names":[],"mappings":"AAqCA,wBAAgB,cAAc,CAAC,EAC9B,SAAS,EACT,KAA0B,GAC1B,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,+BAgIA"}
@@ -1,18 +0,0 @@
1
- interface Review {
2
- id: string;
3
- authorName: string;
4
- rating: number;
5
- title?: string | undefined;
6
- body: string;
7
- isVerifiedPurchase: boolean;
8
- helpfulCount: number;
9
- merchantResponse?: string | undefined;
10
- merchantResponseAt?: string | undefined;
11
- createdAt: string;
12
- }
13
- export declare function ReviewCard({ review, onMarkHelpful, }: {
14
- review: Review;
15
- onMarkHelpful?: ((id: string) => Promise<void>) | undefined;
16
- }): import("react").JSX.Element;
17
- export {};
18
- //# sourceMappingURL=review-card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-card.d.ts","sourceRoot":"","sources":["../../../src/store/components/review-card.tsx"],"names":[],"mappings":"AAOA,UAAU,MAAM;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,EAC1B,MAAM,EACN,aAAa,GACb,EAAE;IACF,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAC5D,+BA4DA"}
@@ -1,5 +0,0 @@
1
- export declare function ReviewForm({ productId, onSuccess, }: {
2
- productId: string;
3
- onSuccess: () => void;
4
- }): import("react").JSX.Element;
5
- //# sourceMappingURL=review-form.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-form.d.ts","sourceRoot":"","sources":["../../../src/store/components/review-form.tsx"],"names":[],"mappings":"AAQA,wBAAgB,UAAU,CAAC,EAC1B,SAAS,EACT,SAAS,GACT,EAAE;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;CACtB,+BAqDA"}
@@ -1,4 +0,0 @@
1
- export declare function ReviewsSummary({ productId }: {
2
- productId: string;
3
- }): import("react").JSX.Element | null;
4
- //# sourceMappingURL=reviews-summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviews-summary.d.ts","sourceRoot":"","sources":["../../../src/store/components/reviews-summary.tsx"],"names":[],"mappings":"AAYA,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,sCAiBlE"}
@@ -1,5 +0,0 @@
1
- export declare function StarDisplay({ rating, size, }: {
2
- rating: number;
3
- size?: "sm" | "md" | "lg";
4
- }): import("react").JSX.Element;
5
- //# sourceMappingURL=star-display.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"star-display.d.ts","sourceRoot":"","sources":["../../../src/store/components/star-display.tsx"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,EAC3B,MAAM,EACN,IAAW,GACX,EAAE;IACF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1B,+BAiBA"}
@@ -1,5 +0,0 @@
1
- export declare function StarPicker({ value, onChange, }: {
2
- value: number;
3
- onChange: (n: number) => void;
4
- }): import("react").JSX.Element;
5
- //# sourceMappingURL=star-picker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"star-picker.d.ts","sourceRoot":"","sources":["../../../src/store/components/star-picker.tsx"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,EAC1B,KAAK,EACL,QAAQ,GACR,EAAE;IACF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,+BAWA"}