@86d-app/products 0.0.4 → 0.0.6

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 (195) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/AGENTS.md +41 -41
  3. package/README.md +266 -5
  4. package/dist/__tests__/controllers.test.d.ts +2 -0
  5. package/dist/__tests__/controllers.test.d.ts.map +1 -0
  6. package/dist/__tests__/endpoint-security.test.d.ts +2 -0
  7. package/dist/__tests__/endpoint-security.test.d.ts.map +1 -0
  8. package/dist/__tests__/service-impl.test.d.ts +2 -0
  9. package/dist/__tests__/service-impl.test.d.ts.map +1 -0
  10. package/dist/__tests__/state.test.d.ts +2 -0
  11. package/dist/__tests__/state.test.d.ts.map +1 -0
  12. package/dist/admin/components/categories-admin.d.ts +2 -0
  13. package/dist/admin/components/categories-admin.d.ts.map +1 -0
  14. package/dist/admin/components/category-form.d.ts +7 -0
  15. package/dist/admin/components/category-form.d.ts.map +1 -0
  16. package/dist/admin/components/category-list.d.ts +7 -0
  17. package/dist/admin/components/category-list.d.ts.map +1 -0
  18. package/dist/admin/components/collections-admin.d.ts +2 -0
  19. package/dist/admin/components/collections-admin.d.ts.map +1 -0
  20. package/dist/admin/components/index.d.ts +9 -0
  21. package/dist/admin/components/index.d.ts.map +1 -0
  22. package/dist/admin/components/product-detail.d.ts +7 -0
  23. package/dist/admin/components/product-detail.d.ts.map +1 -0
  24. package/dist/admin/components/product-edit.d.ts +6 -0
  25. package/dist/admin/components/product-edit.d.ts.map +1 -0
  26. package/dist/admin/components/product-form.d.ts +7 -0
  27. package/dist/admin/components/product-form.d.ts.map +1 -0
  28. package/dist/admin/components/product-list.d.ts +2 -0
  29. package/dist/admin/components/product-list.d.ts.map +1 -0
  30. package/dist/admin/components/product-new.d.ts +2 -0
  31. package/dist/admin/components/product-new.d.ts.map +1 -0
  32. package/dist/admin/endpoints/add-collection-product.d.ts +15 -0
  33. package/dist/admin/endpoints/add-collection-product.d.ts.map +1 -0
  34. package/dist/admin/endpoints/bulk-action.d.ts +17 -0
  35. package/dist/admin/endpoints/bulk-action.d.ts.map +1 -0
  36. package/dist/admin/endpoints/create-category.d.ts +23 -0
  37. package/dist/admin/endpoints/create-category.d.ts.map +1 -0
  38. package/dist/admin/endpoints/create-collection.d.ts +22 -0
  39. package/dist/admin/endpoints/create-collection.d.ts.map +1 -0
  40. package/dist/admin/endpoints/create-product.d.ts +44 -0
  41. package/dist/admin/endpoints/create-product.d.ts.map +1 -0
  42. package/dist/admin/endpoints/create-variant.d.ts +35 -0
  43. package/dist/admin/endpoints/create-variant.d.ts.map +1 -0
  44. package/dist/admin/endpoints/delete-category.d.ts +18 -0
  45. package/dist/admin/endpoints/delete-category.d.ts.map +1 -0
  46. package/dist/admin/endpoints/delete-collection.d.ts +8 -0
  47. package/dist/admin/endpoints/delete-collection.d.ts.map +1 -0
  48. package/dist/admin/endpoints/delete-product.d.ts +18 -0
  49. package/dist/admin/endpoints/delete-product.d.ts.map +1 -0
  50. package/dist/admin/endpoints/delete-variant.d.ts +18 -0
  51. package/dist/admin/endpoints/delete-variant.d.ts.map +1 -0
  52. package/dist/admin/endpoints/get-product.d.ts +16 -0
  53. package/dist/admin/endpoints/get-product.d.ts.map +1 -0
  54. package/dist/admin/endpoints/import-products.d.ts +36 -0
  55. package/dist/admin/endpoints/import-products.d.ts.map +1 -0
  56. package/dist/admin/endpoints/index.d.ts +418 -0
  57. package/dist/admin/endpoints/index.d.ts.map +1 -0
  58. package/dist/admin/endpoints/list-categories.d.ts +11 -0
  59. package/dist/admin/endpoints/list-categories.d.ts.map +1 -0
  60. package/dist/admin/endpoints/list-collections.d.ts +11 -0
  61. package/dist/admin/endpoints/list-collections.d.ts.map +1 -0
  62. package/dist/admin/endpoints/list-products.d.ts +27 -0
  63. package/dist/admin/endpoints/list-products.d.ts.map +1 -0
  64. package/dist/admin/endpoints/remove-collection-product.d.ts +9 -0
  65. package/dist/admin/endpoints/remove-collection-product.d.ts.map +1 -0
  66. package/dist/admin/endpoints/update-category.d.ts +26 -0
  67. package/dist/admin/endpoints/update-category.d.ts.map +1 -0
  68. package/dist/admin/endpoints/update-collection.d.ts +19 -0
  69. package/dist/admin/endpoints/update-collection.d.ts.map +1 -0
  70. package/dist/admin/endpoints/update-product.d.ts +47 -0
  71. package/dist/admin/endpoints/update-product.d.ts.map +1 -0
  72. package/dist/admin/endpoints/update-variant.d.ts +35 -0
  73. package/dist/admin/endpoints/update-variant.d.ts.map +1 -0
  74. package/dist/controllers.d.ts +130 -0
  75. package/dist/controllers.d.ts.map +1 -0
  76. package/dist/index.d.ts +20 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/markdown.d.ts +6 -0
  79. package/dist/markdown.d.ts.map +1 -0
  80. package/dist/schema.d.ts +351 -0
  81. package/dist/schema.d.ts.map +1 -0
  82. package/dist/service-impl.d.ts +4 -0
  83. package/dist/service-impl.d.ts.map +1 -0
  84. package/dist/service.d.ts +280 -0
  85. package/dist/service.d.ts.map +1 -0
  86. package/dist/state.d.ts +38 -0
  87. package/dist/state.d.ts.map +1 -0
  88. package/dist/store/components/_hooks.d.ts +88 -0
  89. package/dist/store/components/_hooks.d.ts.map +1 -0
  90. package/dist/store/components/_types.d.ts +70 -0
  91. package/dist/store/components/_types.d.ts.map +1 -0
  92. package/dist/store/components/_utils.d.ts +5 -0
  93. package/dist/store/components/_utils.d.ts.map +1 -0
  94. package/dist/store/components/back-in-stock-notify.d.ts +8 -0
  95. package/dist/store/components/back-in-stock-notify.d.ts.map +1 -0
  96. package/dist/store/components/collection-card.d.ts +6 -0
  97. package/dist/store/components/collection-card.d.ts.map +1 -0
  98. package/dist/store/components/collection-detail.d.ts +6 -0
  99. package/dist/store/components/collection-detail.d.ts.map +1 -0
  100. package/dist/store/components/collection-grid.d.ts +6 -0
  101. package/dist/store/components/collection-grid.d.ts.map +1 -0
  102. package/dist/store/components/featured-products.d.ts +6 -0
  103. package/dist/store/components/featured-products.d.ts.map +1 -0
  104. package/dist/store/components/filter-chip.d.ts +6 -0
  105. package/dist/store/components/filter-chip.d.ts.map +1 -0
  106. package/dist/store/components/index.d.ts +37 -0
  107. package/dist/store/components/index.d.ts.map +1 -0
  108. package/dist/store/components/product-card.d.ts +7 -0
  109. package/dist/store/components/product-card.d.ts.map +1 -0
  110. package/dist/store/components/product-detail.d.ts +6 -0
  111. package/dist/store/components/product-detail.d.ts.map +1 -0
  112. package/dist/store/components/product-listing.d.ts +7 -0
  113. package/dist/store/components/product-listing.d.ts.map +1 -0
  114. package/dist/store/components/product-qa-section.d.ts +5 -0
  115. package/dist/store/components/product-qa-section.d.ts.map +1 -0
  116. package/dist/store/components/product-reviews-section.d.ts +5 -0
  117. package/dist/store/components/product-reviews-section.d.ts.map +1 -0
  118. package/dist/store/components/recently-viewed.d.ts +12 -0
  119. package/dist/store/components/recently-viewed.d.ts.map +1 -0
  120. package/dist/store/components/recommended-products.d.ts +7 -0
  121. package/dist/store/components/recommended-products.d.ts.map +1 -0
  122. package/dist/store/components/related-products.d.ts +7 -0
  123. package/dist/store/components/related-products.d.ts.map +1 -0
  124. package/dist/store/components/star-display.d.ts +6 -0
  125. package/dist/store/components/star-display.d.ts.map +1 -0
  126. package/dist/store/components/star-picker.d.ts +6 -0
  127. package/dist/store/components/star-picker.d.ts.map +1 -0
  128. package/dist/store/components/stock-badge.d.ts +5 -0
  129. package/dist/store/components/stock-badge.d.ts.map +1 -0
  130. package/dist/store/endpoints/get-category.d.ts +22 -0
  131. package/dist/store/endpoints/get-category.d.ts.map +1 -0
  132. package/dist/store/endpoints/get-collection.d.ts +17 -0
  133. package/dist/store/endpoints/get-collection.d.ts.map +1 -0
  134. package/dist/store/endpoints/get-featured.d.ts +10 -0
  135. package/dist/store/endpoints/get-featured.d.ts.map +1 -0
  136. package/dist/store/endpoints/get-product.d.ts +17 -0
  137. package/dist/store/endpoints/get-product.d.ts.map +1 -0
  138. package/dist/store/endpoints/get-related.d.ts +11 -0
  139. package/dist/store/endpoints/get-related.d.ts.map +1 -0
  140. package/dist/store/endpoints/index.d.ts +130 -0
  141. package/dist/store/endpoints/index.d.ts.map +1 -0
  142. package/dist/store/endpoints/list-categories.d.ts +6 -0
  143. package/dist/store/endpoints/list-categories.d.ts.map +1 -0
  144. package/dist/store/endpoints/list-collections.d.ts +10 -0
  145. package/dist/store/endpoints/list-collections.d.ts.map +1 -0
  146. package/dist/store/endpoints/list-products.d.ts +26 -0
  147. package/dist/store/endpoints/list-products.d.ts.map +1 -0
  148. package/dist/store/endpoints/search-products.d.ts +12 -0
  149. package/dist/store/endpoints/search-products.d.ts.map +1 -0
  150. package/dist/store/endpoints/store-search.d.ts +18 -0
  151. package/dist/store/endpoints/store-search.d.ts.map +1 -0
  152. package/package.json +3 -3
  153. package/src/__tests__/endpoint-security.test.ts +457 -0
  154. package/src/__tests__/service-impl.test.ts +1745 -0
  155. package/src/admin/endpoints/create-category.ts +5 -2
  156. package/src/admin/endpoints/create-collection.ts +1 -1
  157. package/src/admin/endpoints/create-product.ts +5 -2
  158. package/src/admin/endpoints/delete-category.ts +1 -1
  159. package/src/admin/endpoints/delete-collection.ts +1 -1
  160. package/src/admin/endpoints/delete-product.ts +1 -1
  161. package/src/admin/endpoints/delete-variant.ts +1 -1
  162. package/src/admin/endpoints/list-categories.ts +1 -1
  163. package/src/admin/endpoints/list-collections.ts +1 -1
  164. package/src/admin/endpoints/list-products.ts +1 -1
  165. package/src/admin/endpoints/remove-collection-product.ts +1 -1
  166. package/src/admin/endpoints/update-category.ts +5 -2
  167. package/src/admin/endpoints/update-collection.ts +1 -1
  168. package/src/admin/endpoints/update-product.ts +5 -2
  169. package/src/admin/endpoints/update-variant.ts +1 -1
  170. package/src/service-impl.ts +1139 -0
  171. package/src/service.ts +312 -0
  172. package/src/store/components/_hooks.ts +81 -0
  173. package/src/store/components/_utils.ts +8 -0
  174. package/src/store/components/collection-detail.tsx +21 -1
  175. package/src/store/components/collection-grid.tsx +5 -1
  176. package/src/store/components/featured-products.tsx +5 -1
  177. package/src/store/components/index.tsx +2 -0
  178. package/src/store/components/product-card.mdx +1 -1
  179. package/src/store/components/product-card.tsx +25 -5
  180. package/src/store/components/product-detail.mdx +2 -0
  181. package/src/store/components/product-detail.tsx +55 -8
  182. package/src/store/components/product-listing.tsx +25 -4
  183. package/src/store/components/product-qa-section.mdx +21 -0
  184. package/src/store/components/product-qa-section.tsx +503 -0
  185. package/src/store/components/recommended-products.mdx +6 -0
  186. package/src/store/components/recommended-products.tsx +119 -0
  187. package/src/store/endpoints/get-category.ts +2 -2
  188. package/src/store/endpoints/get-collection.ts +1 -1
  189. package/src/store/endpoints/get-featured.ts +1 -1
  190. package/src/store/endpoints/get-product.ts +1 -1
  191. package/src/store/endpoints/get-related.ts +2 -2
  192. package/src/store/endpoints/list-collections.ts +3 -3
  193. package/src/store/endpoints/list-products.ts +9 -9
  194. package/src/store/endpoints/store-search.ts +1 -1
  195. package/COMPONENTS.md +0 -231
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
 
3
3
  export const createCategory = createAdminEndpoint(
4
- "/admin/categories",
4
+ "/admin/categories/create",
5
5
  {
6
6
  method: "POST",
7
7
  body: z.object({
@@ -12,7 +12,10 @@ export const createCategory = createAdminEndpoint(
12
12
  image: z.string().optional(),
13
13
  position: z.number().int().min(0).optional(),
14
14
  isVisible: z.boolean().optional(),
15
- metadata: z.record(z.string(), z.any()).optional(),
15
+ metadata: z
16
+ .record(z.string().max(100), z.unknown())
17
+ .refine((r) => Object.keys(r).length <= 50, "Too many metadata keys")
18
+ .optional(),
16
19
  }),
17
20
  },
18
21
  async (ctx) => {
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
 
3
3
  export const createCollection = createAdminEndpoint(
4
- "/admin/collections",
4
+ "/admin/collections/create",
5
5
  {
6
6
  method: "POST",
7
7
  body: z.object({
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
 
3
3
  export const createProduct = createAdminEndpoint(
4
- "/admin/products",
4
+ "/admin/products/create",
5
5
  {
6
6
  method: "POST",
7
7
  body: z.object({
@@ -21,7 +21,10 @@ export const createProduct = createAdminEndpoint(
21
21
  categoryId: z.string().optional(),
22
22
  images: z.array(z.string()).optional(),
23
23
  tags: z.array(z.string()).optional(),
24
- metadata: z.record(z.string(), z.any()).optional(),
24
+ metadata: z
25
+ .record(z.string().max(100), z.unknown())
26
+ .refine((r) => Object.keys(r).length <= 50, "Too many metadata keys")
27
+ .optional(),
25
28
  weight: z.number().positive().optional(),
26
29
  weightUnit: z.enum(["kg", "lb", "oz", "g"]).optional(),
27
30
  isFeatured: z.boolean().optional(),
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const deleteCategory = createAdminEndpoint(
4
- "/admin/categories/:id",
4
+ "/admin/categories/:id/delete",
5
5
  {
6
6
  method: "DELETE",
7
7
  params: z.object({
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const deleteCollection = createAdminEndpoint(
4
- "/admin/collections/:id",
4
+ "/admin/collections/:id/delete",
5
5
  {
6
6
  method: "DELETE",
7
7
  params: z.object({ id: z.string() }),
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const deleteProduct = createAdminEndpoint(
4
- "/admin/products/:id",
4
+ "/admin/products/:id/delete",
5
5
  {
6
6
  method: "DELETE",
7
7
  params: z.object({
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const deleteVariant = createAdminEndpoint(
4
- "/admin/variants/:id",
4
+ "/admin/variants/:id/delete",
5
5
  {
6
6
  method: "DELETE",
7
7
  params: z.object({
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const adminListCategories = createAdminEndpoint(
4
- "/admin/categories",
4
+ "/admin/categories/list",
5
5
  {
6
6
  method: "GET",
7
7
  query: z
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const adminListCollections = createAdminEndpoint(
4
- "/admin/collections",
4
+ "/admin/collections/list",
5
5
  {
6
6
  method: "GET",
7
7
  query: z
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const adminListProducts = createAdminEndpoint(
4
- "/admin/products",
4
+ "/admin/products/list",
5
5
  {
6
6
  method: "GET",
7
7
  query: z
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, z } from "@86d-app/core";
2
2
 
3
3
  export const removeCollectionProduct = createAdminEndpoint(
4
- "/admin/collections/:id/products/:productId",
4
+ "/admin/collections/:id/products/:productId/remove",
5
5
  {
6
6
  method: "DELETE",
7
7
  params: z.object({
@@ -2,7 +2,7 @@ import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
  import type { Category } from "../../controllers";
3
3
 
4
4
  export const updateCategory = createAdminEndpoint(
5
- "/admin/categories/:id",
5
+ "/admin/categories/:id/update",
6
6
  {
7
7
  method: "PUT",
8
8
  params: z.object({
@@ -21,7 +21,10 @@ export const updateCategory = createAdminEndpoint(
21
21
  image: z.string().max(2048).nullable().optional(),
22
22
  position: z.number().int().min(0).optional(),
23
23
  isVisible: z.boolean().optional(),
24
- metadata: z.record(z.string(), z.any()).optional(),
24
+ metadata: z
25
+ .record(z.string().max(100), z.unknown())
26
+ .refine((r) => Object.keys(r).length <= 50, "Too many metadata keys")
27
+ .optional(),
25
28
  }),
26
29
  },
27
30
  async (ctx) => {
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
 
3
3
  export const updateCollection = createAdminEndpoint(
4
- "/admin/collections/:id",
4
+ "/admin/collections/:id/update",
5
5
  {
6
6
  method: "PUT",
7
7
  params: z.object({ id: z.string() }),
@@ -2,7 +2,7 @@ import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
  import type { Product } from "../../controllers";
3
3
 
4
4
  export const updateProduct = createAdminEndpoint(
5
- "/admin/products/:id",
5
+ "/admin/products/:id/update",
6
6
  {
7
7
  method: "PUT",
8
8
  params: z.object({
@@ -25,7 +25,10 @@ export const updateProduct = createAdminEndpoint(
25
25
  categoryId: z.string().nullable().optional(),
26
26
  images: z.array(z.string()).optional(),
27
27
  tags: z.array(z.string()).optional(),
28
- metadata: z.record(z.string(), z.any()).optional(),
28
+ metadata: z
29
+ .record(z.string().max(100), z.unknown())
30
+ .refine((r) => Object.keys(r).length <= 50, "Too many metadata keys")
31
+ .optional(),
29
32
  weight: z.number().positive().nullable().optional(),
30
33
  weightUnit: z.enum(["kg", "lb", "oz", "g"]).nullable().optional(),
31
34
  isFeatured: z.boolean().optional(),
@@ -1,7 +1,7 @@
1
1
  import { createAdminEndpoint, sanitizeText, z } from "@86d-app/core";
2
2
 
3
3
  export const updateVariant = createAdminEndpoint(
4
- "/admin/variants/:id",
4
+ "/admin/variants/:id/update",
5
5
  {
6
6
  method: "PUT",
7
7
  params: z.object({