@evershop/evershop 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/bin/build/client/index.js +1 -1
  2. package/bin/build/complie.js +1 -1
  3. package/bin/build/index.js +1 -1
  4. package/bin/build/server/index.js +1 -1
  5. package/bin/build/server/useDDL.js +1 -1
  6. package/bin/dev/index.js +2 -1
  7. package/bin/evershop +8 -7
  8. package/bin/extension/index.js +1 -1
  9. package/bin/install/index.js +1 -1
  10. package/bin/lib/addDefaultMiddlewareFuncs.js +2 -2
  11. package/bin/lib/app.js +1 -1
  12. package/bin/lib/bootstrap/migrate.js +1 -1
  13. package/bin/lib/buildEntry.js +1 -1
  14. package/bin/lib/onError.js +1 -1
  15. package/bin/lib/onListening.js +1 -1
  16. package/bin/lib/startUp.js +10 -9
  17. package/bin/lib/watch/watchComponents.js +16 -26
  18. package/bin/lib/watch/watchMF.js +1 -1
  19. package/bin/lib/watch/watchMR.js +1 -1
  20. package/bin/lib/watch/watchSchema.js +1 -1
  21. package/bin/user/changePassword.js +1 -1
  22. package/bin/user/create.js +1 -1
  23. package/package.json +2 -2
  24. package/src/components/admin/catalog/productEdit/category/CategoryItem.jsx +1 -1
  25. package/src/components/admin/catalog/productEdit/category/CategoryTree.jsx +1 -1
  26. package/src/components/admin/catalog/productEdit/variants/CreateVariantGroup.jsx +3 -8
  27. package/src/components/admin/catalog/productEdit/variants/Variant.jsx +1 -1
  28. package/src/components/admin/catalog/productEdit/variants/VariantModal.jsx +62 -6
  29. package/src/components/admin/catalog/productEdit/variants/Variants.jsx +1 -1
  30. package/src/components/admin/checkout/shippingSetting/Method.jsx +130 -0
  31. package/src/components/admin/{oms → checkout}/shippingSetting/MethodForm.jsx +124 -13
  32. package/src/components/admin/{oms → checkout}/shippingSetting/Methods.jsx +2 -2
  33. package/src/components/admin/checkout/shippingSetting/PriceBasedPrice.jsx +101 -0
  34. package/src/components/admin/checkout/shippingSetting/WeightBasedPrice.jsx +101 -0
  35. package/src/components/admin/{oms → checkout}/shippingSetting/Zone.jsx +34 -4
  36. package/src/components/admin/{oms → checkout}/shippingSetting/Zones.jsx +6 -3
  37. package/src/components/admin/promotion/couponEdit/AttributeGroupSelector.jsx +5 -5
  38. package/src/components/admin/promotion/couponEdit/CategorySelector.jsx +5 -5
  39. package/src/components/admin/promotion/couponEdit/CollectionSelector.jsx +5 -5
  40. package/src/components/admin/promotion/couponEdit/ProductSkuSelector.jsx +27 -6
  41. package/src/components/common/context/checkout.jsx +8 -14
  42. package/src/components/common/form/Field.jsx +1 -1
  43. package/src/components/common/form/fields/Input.jsx +2 -1
  44. package/src/components/common/form/validator.js +6 -2
  45. package/src/components/common/grid/headers/Dummy.jsx +1 -1
  46. package/src/components/common/grid/headers/Sortable.jsx +148 -0
  47. package/src/components/common/grid/rows/StatusRow.jsx +1 -1
  48. package/src/components/common/list/Filter.jsx +83 -0
  49. package/src/components/common/list/Filter.scss +39 -0
  50. package/src/components/frontStore/catalog/categoryView/filter/AttributeFilter.jsx +19 -5
  51. package/src/components/frontStore/catalog/categoryView/filter/CategoryFilter.jsx +59 -52
  52. package/src/components/frontStore/catalog/categoryView/filter/PriceFilter.jsx +20 -11
  53. package/src/components/frontStore/catalog/product/list/SortOptions.jsx +4 -2
  54. package/src/components/frontStore/catalog/product/list/Sorting.jsx +5 -5
  55. package/src/components/frontStore/checkout/checkout/payment/paymentStep/StepContent.jsx +9 -6
  56. package/src/components/frontStore/stripe/checkout/CheckoutForm.jsx +8 -4
  57. package/src/lib/event/callSubscibers.js +14 -11
  58. package/src/lib/event/event-manager.js +1 -1
  59. package/src/lib/event/loadSubscribers.js +2 -2
  60. package/src/lib/helpers.js +3 -1
  61. package/src/lib/log/CustomColorize.js +22 -0
  62. package/src/lib/log/logger.js +153 -19
  63. package/src/lib/middleware/Handler.js +2 -3
  64. package/src/lib/middleware/async.js +5 -9
  65. package/src/lib/middleware/sync.js +5 -10
  66. package/src/lib/middleware/tests/app/app.js +1 -1
  67. package/src/lib/router/buildAbsoluteUrl.js +1 -1
  68. package/src/lib/util/buildFilterFromUrl.js +31 -64
  69. package/src/lib/util/defaultPaginationFilters.js +102 -0
  70. package/src/lib/util/filterOperationMapp.js +16 -0
  71. package/src/lib/util/registry.js +44 -6
  72. package/src/lib/webpack/dev/createConfigClient.js +2 -0
  73. package/src/lib/webpack/loaders/AreaLoader.js +1 -1
  74. package/src/lib/webpack/loaders/loadTranslationFromCsv.js +1 -1
  75. package/src/lib/webpack/plugins/Tailwindcss.js +1 -1
  76. package/src/modules/auth/graphql/types/AdminUser/AdminUser.admin.resolvers.js +6 -6
  77. package/src/modules/auth/pages/admin/adminLogin/LoginForm.jsx +1 -15
  78. package/src/modules/base/api/global/[apiResponse]apiErrorHandler.js +2 -2
  79. package/src/modules/base/pages/global/[response]errorHandler.js +2 -2
  80. package/src/modules/catalog/api/addProductToCategory/addProducts.js +1 -1
  81. package/src/modules/catalog/api/addProductToCollection/addProducts.js +35 -22
  82. package/src/modules/catalog/api/removeProductFromCollection/removeProducts.js +20 -5
  83. package/src/modules/catalog/bootstrap.js +63 -0
  84. package/src/modules/catalog/graphql/types/Attribute/Attribute.admin.graphql +2 -2
  85. package/src/modules/catalog/graphql/types/Attribute/Attribute.admin.resolvers.js +48 -276
  86. package/src/modules/catalog/graphql/types/Category/Category.graphql +15 -2
  87. package/src/modules/catalog/graphql/types/Category/Category.resolvers.js +2 -2
  88. package/src/modules/catalog/graphql/types/Collection/Collection.resolvers.js +2 -2
  89. package/src/modules/catalog/graphql/types/Product/Product.resolvers.js +1 -1
  90. package/src/modules/catalog/graphql/types/Product/Variant/Variant.graphql +2 -2
  91. package/src/modules/catalog/graphql/types/Product/Variant/Variant.resolvers.js +68 -92
  92. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/General.jsx +13 -9
  93. package/src/modules/catalog/pages/admin/attributeGrid/Grid.jsx +82 -39
  94. package/src/modules/catalog/pages/admin/attributeGrid/index.js +1 -1
  95. package/src/modules/catalog/pages/admin/categoryEdit/Products.jsx +5 -5
  96. package/src/modules/catalog/pages/admin/categoryGrid/Grid.jsx +48 -16
  97. package/src/modules/catalog/pages/admin/categoryGrid/index.js +1 -1
  98. package/src/modules/catalog/pages/admin/collectionEdit/Products.jsx +5 -5
  99. package/src/modules/catalog/pages/admin/collectionGrid/Grid.jsx +46 -5
  100. package/src/modules/catalog/pages/admin/collectionGrid/index.js +1 -1
  101. package/src/modules/catalog/pages/admin/productEdit+productNew/Attributes.jsx +28 -24
  102. package/src/modules/catalog/pages/admin/productGrid/Grid.jsx +158 -26
  103. package/src/modules/catalog/pages/admin/productGrid/index.js +1 -2
  104. package/src/modules/catalog/pages/frontStore/all/SearchBox.jsx +2 -1
  105. package/src/modules/catalog/pages/frontStore/catalogSearch/[index]filters.js +4 -59
  106. package/src/modules/catalog/pages/frontStore/catalogSearch/index.js +11 -0
  107. package/src/modules/catalog/pages/frontStore/categoryView/Filter.jsx +22 -6
  108. package/src/modules/catalog/pages/frontStore/categoryView/Filter.scss +2 -0
  109. package/src/modules/catalog/pages/frontStore/categoryView/[index]filters.js +5 -105
  110. package/src/modules/catalog/pages/frontStore/homepage/FeaturedProducts.jsx +1 -1
  111. package/src/modules/catalog/pages/frontStore/productView/Form.jsx +8 -3
  112. package/src/modules/catalog/pages/frontStore/productView/Variants.jsx +102 -40
  113. package/src/modules/catalog/services/AttributeCollection.js +59 -0
  114. package/src/modules/catalog/services/AttributeGroupCollection.js +100 -0
  115. package/src/modules/catalog/services/CategoryCollection.js +27 -84
  116. package/src/modules/catalog/services/CollectionCollection.js +24 -72
  117. package/src/modules/catalog/services/ProductCollection.js +50 -216
  118. package/src/modules/catalog/services/attribute/deleteProductAttribute.js +15 -0
  119. package/src/modules/catalog/services/getAttributeGroupsBaseQuery.js +3 -0
  120. package/src/modules/catalog/services/getAttributesBaseQuery.js +3 -0
  121. package/src/modules/catalog/services/getCollectionsBaseQuery.js +0 -1
  122. package/src/modules/catalog/services/product/updateProduct.js +8 -2
  123. package/src/modules/catalog/services/registerDefaultAttributeCollectionFilters.js +149 -0
  124. package/src/modules/catalog/services/registerDefaultCategoryCollectionFilters.js +85 -0
  125. package/src/modules/catalog/services/registerDefaultCollectionCollectionFilters.js +65 -0
  126. package/src/modules/catalog/services/registerDefaultProductCollectionFilters.js +219 -0
  127. package/src/modules/catalog/subscribers/category_created/buildUrlRewrite.js +1 -1
  128. package/src/modules/catalog/subscribers/category_deleted/deleteUrlRewrite.js +1 -1
  129. package/src/modules/catalog/subscribers/category_updated/builUrlRewrite.js +1 -1
  130. package/src/modules/catalog/subscribers/product_created/builUrlRewrite.js +1 -1
  131. package/src/modules/catalog/subscribers/product_deleted/deleteUrlRewrite.js +1 -1
  132. package/src/modules/catalog/subscribers/product_image_added/localGenerateProductImageVariant.js +3 -3
  133. package/src/modules/checkout/api/addCartShippingMethod/saveShippingMethod.js +6 -1
  134. package/src/modules/checkout/api/createCart/[context]bodyParser[auth].js +5 -0
  135. package/src/modules/checkout/api/createCart/createNewCart.js +92 -0
  136. package/src/modules/checkout/api/createCart/payloadSchema.json +44 -0
  137. package/src/modules/checkout/api/createCart/route.json +5 -0
  138. package/src/modules/checkout/api/deleteShippingZone/deleteShippingZone.js +58 -0
  139. package/src/modules/checkout/api/deleteShippingZone/route.json +5 -0
  140. package/src/modules/checkout/api/deleteShippingZoneMethod/deleteShippingZoneMethod.js +85 -0
  141. package/src/modules/checkout/api/deleteShippingZoneMethod/route.json +5 -0
  142. package/src/modules/checkout/api/getShippingMethods/sendMethods.js +37 -0
  143. package/src/modules/checkout/api/updateShippingMethod/[context]borderParser[auth].js +5 -0
  144. package/src/modules/checkout/api/updateShippingMethod/payloadSchema.json +12 -0
  145. package/src/modules/checkout/api/updateShippingMethod/route.json +5 -0
  146. package/src/modules/checkout/api/updateShippingMethod/updateShippingMethod.js +64 -0
  147. package/src/modules/checkout/api/updateShippingZoneMethod/payloadSchema.json +43 -1
  148. package/src/modules/checkout/api/updateShippingZoneMethod/updateShippingZoneMethod.js +17 -3
  149. package/src/modules/checkout/bootstrap.js +1 -1
  150. package/src/modules/checkout/graphql/types/ShippingMethod/ShippingMethod.graphql +1 -0
  151. package/src/modules/checkout/graphql/types/ShippingMethod/ShippingMethod.resolvers.js +4 -0
  152. package/src/modules/checkout/graphql/types/ShippingZone/ShippingZone.graphql +21 -1
  153. package/src/modules/checkout/graphql/types/ShippingZone/ShippingZone.resolvers.js +34 -4
  154. package/src/modules/checkout/graphql/types/Weight/Weight.resolvers.js +8 -11
  155. package/src/modules/checkout/migration/Version-1.0.5.js +28 -0
  156. package/src/modules/{oms → checkout}/pages/admin/shippingSetting/ShippingSetting.jsx +66 -43
  157. package/src/modules/checkout/pages/frontStore/all/[auth]addCustomerToCart.js +3 -3
  158. package/src/modules/checkout/pages/frontStore/checkout/PaymentStep.jsx +3 -2
  159. package/src/modules/checkout/pages/frontStore/checkout/ShippingMethods.jsx +23 -10
  160. package/src/modules/checkout/pages/frontStore/checkout/SummaryMobile.jsx +132 -0
  161. package/src/modules/checkout/pages/frontStore/checkout/SummaryMobile.scss +7 -0
  162. package/src/modules/checkout/services/cart/Cart.js +23 -7
  163. package/src/modules/checkout/services/cart/DataObject.js +3 -3
  164. package/src/modules/checkout/services/cart/registerCartBaseFields.js +32 -0
  165. package/src/modules/checkout/services/cart/registerCartItemBaseFields.js +3 -2
  166. package/src/modules/cms/bootstrap.js +17 -0
  167. package/src/modules/cms/graphql/types/CmsPage/CmsPage.resolvers.js +2 -11
  168. package/src/modules/cms/pages/admin/all/Layout.scss +3 -2
  169. package/src/modules/cms/pages/admin/all/SearchBox.jsx +1 -1
  170. package/src/modules/cms/pages/admin/cmsPageGrid/Grid.jsx +62 -9
  171. package/src/modules/cms/pages/admin/cmsPageGrid/index.js +1 -2
  172. package/src/modules/cms/services/CMSPageCollection.js +23 -70
  173. package/src/modules/cms/services/registerDefaultPageCollectionFilters.js +62 -0
  174. package/src/modules/cms/services/tailwind.admin.config.js +6 -1
  175. package/src/modules/customer/api/createCustomer/[bodyParser]createCustomer.js +2 -2
  176. package/src/modules/customer/api/resetPassword/[bodyParser]resetPassword.js +2 -2
  177. package/src/modules/customer/api/updatePassword/[bodyParser]updatePassword.js +2 -2
  178. package/src/modules/customer/bootstrap.js +29 -0
  179. package/src/modules/customer/graphql/types/Customer/Customer.admin.resolvers.js +2 -4
  180. package/src/modules/customer/pages/admin/customerGrid/Grid.jsx +108 -14
  181. package/src/modules/customer/pages/admin/customerGrid/index.js +1 -2
  182. package/src/modules/customer/pages/frontStore/login/LoginForm.jsx +0 -1
  183. package/src/modules/customer/services/CustomerCollection.js +23 -104
  184. package/src/modules/customer/services/CustomerGroupCollection.js +21 -70
  185. package/src/modules/customer/services/registerDefaultCustomerCollectionFilters.js +90 -0
  186. package/src/modules/customer/services/registerDefaultCustomerGroupCollectionFilters.js +50 -0
  187. package/src/modules/graphql/pages/global/[bodyParser]buildQuery[graphql].js +1 -1
  188. package/src/modules/graphql/pages/global/[buildQuery]graphql[notification].js +1 -1
  189. package/src/modules/graphql/services/graphqlMiddleware.js +1 -1
  190. package/src/modules/oms/bootstrap.js +17 -0
  191. package/src/modules/oms/graphql/types/Order/Order.admin.resolvers.js +1 -1
  192. package/src/modules/oms/graphql/types/Order/Order.resolvers.js +2 -1
  193. package/src/modules/oms/pages/admin/orderGrid/Grid.jsx +152 -51
  194. package/src/modules/oms/pages/admin/orderGrid/index.js +1 -2
  195. package/src/modules/oms/services/OrderCollection.js +19 -139
  196. package/src/modules/oms/services/registerDefaultOrderCollectionFilters.js +121 -0
  197. package/src/modules/promotion/bootstrap.js +16 -0
  198. package/src/modules/promotion/graphql/types/Coupon/Coupon.admin.resolvers.js +2 -7
  199. package/src/modules/promotion/pages/admin/couponGrid/Grid.jsx +157 -33
  200. package/src/modules/promotion/pages/admin/couponGrid/index.js +1 -2
  201. package/src/modules/promotion/services/CouponCollection.js +21 -130
  202. package/src/modules/promotion/services/registerDefaultCouponCollectionFilters.js +72 -0
  203. package/src/modules/stripe/api/stripeWebHook/[bodyJson]webhook.js +4 -2
  204. package/src/modules/tax/bootstrap.js +17 -0
  205. package/src/modules/tax/services/TaxClassCollection.js +22 -56
  206. package/src/modules/tax/services/registerDefaultTaxClassCollectionFilters.js +49 -0
  207. package/src/components/admin/oms/shippingSetting/Method.jsx +0 -73
  208. package/src/components/common/grid/headers/Basic.jsx +0 -55
  209. package/src/lib/log/debuger.js +0 -89
  210. package/src/modules/customer/pages/frontStore/login/LoginButton.jsx +0 -27
  211. /package/src/components/admin/{oms → checkout}/shippingSetting/ZoneForm.jsx +0 -0
  212. /package/src/modules/{oms → checkout}/pages/admin/all/ShippingSettingMenu.jsx +0 -0
  213. /package/src/modules/{oms → checkout}/pages/admin/shippingSetting/index.js +0 -0
  214. /package/src/modules/{oms → checkout}/pages/admin/shippingSetting/route.json +0 -0
@@ -2,7 +2,7 @@ const webpack = require('webpack');
2
2
  const {
3
3
  createConfigClient
4
4
  } = require('@evershop/evershop/src/lib/webpack/prod/createConfigClient');
5
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
5
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
6
6
 
7
7
  module.exports.buildClient = async function buildClient(routes) {
8
8
  const config = createConfigClient(routes);
@@ -5,7 +5,7 @@ const {
5
5
  const {
6
6
  createConfigServer
7
7
  } = require('@evershop/evershop/src/lib/webpack/prod/createConfigServer');
8
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
8
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
9
9
 
10
10
  module.exports.compile = async function compile(routes) {
11
11
  const config = [createConfigClient(routes), createConfigServer(routes)];
@@ -10,7 +10,7 @@ const {
10
10
  } = require('@evershop/evershop/src/lib/webpack/isBuildRequired');
11
11
  const { buildEntry } = require('@evershop/evershop/bin/lib/buildEntry');
12
12
  const { getCoreModules } = require('@evershop/evershop/bin/lib/loadModules');
13
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
13
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
14
14
  const { compile } = require('./complie');
15
15
  const { getEnabledExtensions } = require('../extension');
16
16
  require('dotenv').config();
@@ -2,7 +2,7 @@ const webpack = require('webpack');
2
2
  const {
3
3
  createConfigServer
4
4
  } = require('@evershop/evershop/src/lib/webpack/prod/createConfigServer');
5
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
5
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
6
6
 
7
7
  module.exports.buildServer = async function buildServer(routes) {
8
8
  const config = createConfigServer(routes);
@@ -11,7 +11,7 @@ const {
11
11
  getComponentsByRoute
12
12
  } = require('@evershop/evershop/src/lib/componee/getComponentByRoute');
13
13
  const webpack = require('webpack');
14
- const { info } = require('@evershop/evershop/src/lib/log/debuger');
14
+ const { info } = require('@evershop/evershop/src/lib/log/logger');
15
15
 
16
16
  const modules = loadModules(path.resolve(__dirname, '../../../src', 'modules'));
17
17
 
package/bin/dev/index.js CHANGED
@@ -2,7 +2,8 @@
2
2
  process.env.ALLOW_CONFIG_MUTATIONS = true;
3
3
  require('dotenv').config();
4
4
  const { start } = require('@evershop/evershop/bin/lib/startUp');
5
+ const { watchComponents } = require('../lib/watch/watchComponents');
5
6
 
6
7
  (async () => {
7
- await start();
8
+ await start(watchComponents);
8
9
  })();
package/bin/evershop CHANGED
@@ -2,16 +2,9 @@
2
2
  /* eslint-disable global-require */
3
3
  const yargs = require('yargs/yargs');
4
4
  const { hideBin } = require('yargs/helpers');
5
- const { error } = require('../src/lib/log/debuger');
6
5
 
7
6
  const { argv } = yargs(hideBin(process.argv));
8
7
  const command = argv._[0];
9
- process.on('uncaughtException', function (exception) {
10
- error(exception);
11
- });
12
- process.on('unhandledRejection', (reason, p) => {
13
- error(`Unhandled Rejection: ${reason} at: ${p}`);
14
- });
15
8
 
16
9
  try {
17
10
  if (command === 'build') {
@@ -33,5 +26,13 @@ try {
33
26
  throw new Error('Invalid command');
34
27
  }
35
28
  } catch (e) {
29
+ const { error } = require('../src/lib/log/logger');
36
30
  error(e);
37
31
  }
32
+ const { error } = require('../src/lib/log/logger');
33
+ process.on('uncaughtException', function (exception) {
34
+ error(exception);
35
+ });
36
+ process.on('unhandledRejection', (reason, p) => {
37
+ error(`Unhandled Rejection: ${reason} at: ${p}`);
38
+ });
@@ -3,7 +3,7 @@ const { resolve } = require('path');
3
3
  const { CONSTANTS } = require('@evershop/evershop/src/lib/helpers');
4
4
  const { getConfig } = require('@evershop/evershop/src/lib/util/getConfig');
5
5
  const { getCoreModules } = require('@evershop/evershop/bin/lib/loadModules');
6
- const { warning } = require('@evershop/evershop/src/lib/log/debuger');
6
+ const { warning } = require('@evershop/evershop/src/lib/log/logger');
7
7
 
8
8
  let extensions = [];
9
9
 
@@ -14,7 +14,7 @@ const {
14
14
  } = require('@evershop/postgres-query-builder');
15
15
  const { prompt } = require('enquirer');
16
16
  const { CONSTANTS } = require('@evershop/evershop/src/lib/helpers');
17
- const { error, success } = require('@evershop/evershop/src/lib/log/debuger');
17
+ const { error, success } = require('@evershop/evershop/src/lib/log/logger');
18
18
  const {
19
19
  hashPassword
20
20
  } = require('@evershop/evershop/src/lib/util/passwordHelper');
@@ -4,7 +4,7 @@ const session = require('express-session');
4
4
  const sessionStorage = require('connect-pg-simple');
5
5
  const pathToRegexp = require('path-to-regexp');
6
6
  const webpack = require('webpack');
7
- const { debug } = require('@evershop/evershop/src/lib/log/debuger');
7
+ const { debug } = require('@evershop/evershop/src/lib/log/logger');
8
8
  const middleware = require('webpack-dev-middleware');
9
9
  const {
10
10
  createConfigClient
@@ -59,7 +59,7 @@ exports.addDefaultMiddlewareFuncs = function addDefaultMiddlewareFuncs(
59
59
  ) {
60
60
  return;
61
61
  }
62
- debug('info', message);
62
+ debug(message);
63
63
  });
64
64
  });
65
65
  // Add public static middleware
package/bin/lib/app.js CHANGED
@@ -10,7 +10,7 @@ const {
10
10
  loadModuleRoutes
11
11
  } = require('@evershop/evershop/src/lib/router/loadModuleRoutes');
12
12
  const { Handler } = require('@evershop/evershop/src/lib/middleware/Handler');
13
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
13
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
14
14
  const { getCoreModules } = require('./loadModules');
15
15
  const { addDefaultMiddlewareFuncs } = require('./addDefaultMiddlewareFuncs');
16
16
  const { getEnabledExtensions } = require('../extension');
@@ -12,7 +12,7 @@ const {
12
12
  pool
13
13
  } = require('@evershop/evershop/src/lib/postgres/connection');
14
14
  const { existsSync, readdirSync } = require('fs');
15
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
15
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
16
16
  const { createMigrationTable } = require('../../install/createMigrationTable');
17
17
 
18
18
  async function getCurrentInstalledVersion(module) {
@@ -13,7 +13,7 @@ const {
13
13
  parseGraphql
14
14
  } = require('@evershop/evershop/src/lib/webpack/util/parseGraphql');
15
15
  const JSON5 = require('json5');
16
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
16
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
17
17
  /**
18
18
  * Only pass the page routes, not api routes
19
19
  */
@@ -1,4 +1,4 @@
1
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
1
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
2
2
  const normalizePort = require('./normalizePort');
3
3
 
4
4
  const port = normalizePort();
@@ -1,5 +1,5 @@
1
1
  const boxen = require('boxen');
2
- const { success } = require('@evershop/evershop/src/lib/log/debuger');
2
+ const { success } = require('@evershop/evershop/src/lib/log/logger');
3
3
  const normalizePort = require('./normalizePort');
4
4
 
5
5
  const port = normalizePort();
@@ -2,7 +2,7 @@ const http = require('http');
2
2
  const { Handler } = require('@evershop/evershop/src/lib/middleware/Handler');
3
3
  const spawn = require('cross-spawn');
4
4
  const path = require('path');
5
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
5
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
6
6
  const isDevelopmentMode = require('@evershop/evershop/src/lib/util/isDevelopmentMode');
7
7
  const { lockHooks } = require('@evershop/evershop/src/lib/util/hookable');
8
8
  const { lockRegistry } = require('@evershop/evershop/src/lib/util/registry');
@@ -22,14 +22,6 @@ const server = http.createServer(app);
22
22
  module.exports.start = async function start(cb) {
23
23
  const modules = [...getCoreModules(), ...getEnabledExtensions()];
24
24
 
25
- /** Migration */
26
- try {
27
- await migrate(modules);
28
- } catch (e) {
29
- error(e);
30
- process.exit(0);
31
- }
32
-
33
25
  /** Loading bootstrap script from modules */
34
26
  try {
35
27
  // eslint-disable-next-line no-restricted-syntax
@@ -43,6 +35,15 @@ module.exports.start = async function start(cb) {
43
35
  process.exit(0);
44
36
  }
45
37
  process.env.ALLOW_CONFIG_MUTATIONS = false;
38
+
39
+ /** Migration */
40
+ try {
41
+ await migrate(modules);
42
+ } catch (e) {
43
+ error(e);
44
+ process.exit(0);
45
+ }
46
+
46
47
  /**
47
48
  * Get port from environment and store in Express.
48
49
  */
@@ -1,34 +1,24 @@
1
1
  const chokidar = require('chokidar');
2
- const { resolve, sep, normalize } = require('path');
2
+ const touch = require('touch');
3
+ const { resolve } = require('path');
3
4
  const { CONSTANTS } = require('@evershop/evershop/src/lib/helpers');
4
- const { Componee } = require('@evershop/evershop/src/lib/componee/Componee');
5
- const {
6
- createComponents
7
- } = require('@evershop/evershop/bin/lib/createComponents');
8
- const { getRoutes } = require('@evershop/evershop/src/lib/router/Router');
9
- const {
10
- isBuildRequired
11
- } = require('@evershop/evershop/src/lib/webpack/isBuildRequired');
12
5
 
13
6
  function watchComponents() {
14
7
  chokidar
15
- .watch('**/**/pages/*.js', {
16
- ignored: /node_modules[\\/]/,
17
- ignoreInitial: true,
18
- persistent: true
19
- })
20
- .on('all', (event, path) => {
21
- const modulePath = resolve(CONSTANTS.ROOTPATH, path).split(
22
- normalize('/views/')
23
- )[0];
24
- Componee.updateModuleComponents({
25
- name: modulePath.split(sep).reverse()[0],
26
- path: modulePath
27
- });
28
- const routes = getRoutes();
29
- createComponents(
30
- routes.filter((r) => isBuildRequired(r)),
31
- true
8
+ .watch(
9
+ ['./packages/**/*.jsx', './extensions/**/*.jsx', './themes/**/*.jsx'],
10
+ {
11
+ ignored: /node_modules[\\/]/,
12
+ ignoreInitial: true,
13
+ persistent: true
14
+ }
15
+ )
16
+ .on('add', () => {
17
+ touch(
18
+ resolve(
19
+ CONSTANTS.MOLDULESPATH,
20
+ '../components/common/react/client/Index.jsx'
21
+ )
32
22
  );
33
23
  });
34
24
  }
@@ -1,6 +1,6 @@
1
1
  const { normalize, basename } = require('path');
2
2
  const { Handler } = require('@evershop/evershop/src/lib/middleware/Handler');
3
- const { error } = require('@evershop/evershop/src/lib/log/debuger');
3
+ const { error } = require('@evershop/evershop/src/lib/log/logger');
4
4
  const { broadcash } = require('./broadcash');
5
5
 
6
6
  module.exports.watchMF = function (event, path) {
@@ -3,7 +3,7 @@ const { existsSync } = require('fs');
3
3
  const { resolve } = require('path');
4
4
  const { CONSTANTS } = require('@evershop/evershop/src/lib/helpers');
5
5
  const { Handler } = require('@evershop/evershop/src/lib/middleware/Handler');
6
- const { info, error } = require('@evershop/evershop/src/lib/log/debuger');
6
+ const { info, error } = require('@evershop/evershop/src/lib/log/logger');
7
7
  const { updateApp } = require('../startUp');
8
8
  const { broadcash } = require('./broadcash');
9
9
 
@@ -1,6 +1,6 @@
1
1
  const { normalize, resolve } = require('path');
2
2
  const { CONSTANTS } = require('@evershop/evershop/src/lib/helpers');
3
- const { info } = require('@evershop/evershop/src/lib/log/debuger');
3
+ const { info } = require('@evershop/evershop/src/lib/log/logger');
4
4
  const { broadcash } = require('./broadcash');
5
5
 
6
6
  module.exports.watchSchema = function (event, path) {
@@ -1,5 +1,5 @@
1
1
  require('dotenv').config();
2
- const { error, success } = require('@evershop/evershop/src/lib/log/debuger');
2
+ const { error, success } = require('@evershop/evershop/src/lib/log/logger');
3
3
  const { pool } = require('@evershop/evershop/src/lib/postgres/connection');
4
4
  const {
5
5
  hashPassword
@@ -1,5 +1,5 @@
1
1
  require('dotenv').config();
2
- const { error, success } = require('@evershop/evershop/src/lib/log/debuger');
2
+ const { error, success } = require('@evershop/evershop/src/lib/log/logger');
3
3
  const { pool } = require('@evershop/evershop/src/lib/postgres/connection');
4
4
  const {
5
5
  hashPassword
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evershop/evershop",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "The React Ecommerce platform. Built with React and Postgres. Open-source and free. Fast and customizable.",
5
5
  "files": [
6
6
  "bin",
@@ -40,7 +40,7 @@
40
40
  "@babel/preset-react": "^7.16.0",
41
41
  "@ckeditor/ckeditor5-build-classic": "^36.0.1",
42
42
  "@ckeditor/ckeditor5-react": "^5.1.0",
43
- "@evershop/postgres-query-builder": "^1.1.0",
43
+ "@evershop/postgres-query-builder": "^1.2.0",
44
44
  "@graphql-tools/load-files": "^6.6.1",
45
45
  "@graphql-tools/merge": "^8.3.5",
46
46
  "@graphql-tools/schema": "^9.0.3",
@@ -24,7 +24,7 @@ function CategoryItem({ category, selectedCategory, setSelectedCategory }) {
24
24
  const [result] = useQuery({
25
25
  query: childrenQuery,
26
26
  variables: {
27
- filters: [{ key: 'parent', operation: '=', value: category.categoryId }]
27
+ filters: [{ key: 'parent', operation: 'eq', value: category.categoryId }]
28
28
  },
29
29
  pause: !expanded
30
30
  });
@@ -25,7 +25,7 @@ function CategoryTree({ selectedCategory, setSelectedCategory }) {
25
25
  const [result] = useQuery({
26
26
  query: categoriesQuery,
27
27
  variables: {
28
- filters: [{ key: 'parent', operation: '=', value: null }]
28
+ filters: [{ key: 'parent', operation: 'eq', value: null }]
29
29
  }
30
30
  });
31
31
  const { data, fetching, error } = result;
@@ -70,8 +70,8 @@ export function CreateVariantGroup({ createVariantGroupApi, setGroup }) {
70
70
  query: AttributesQuery,
71
71
  variables: {
72
72
  filters: [
73
- { key: 'type', operation: '=', value: 'select' },
74
- { key: 'group', operation: '=', value: groupField?.value }
73
+ { key: 'type', operation: 'eq', value: 'select' },
74
+ { key: 'group', operation: 'eq', value: groupField?.value }
75
75
  ]
76
76
  },
77
77
  pause: shouldPause
@@ -87,12 +87,7 @@ export function CreateVariantGroup({ createVariantGroupApi, setGroup }) {
87
87
  }
88
88
 
89
89
  if (error) {
90
- return (
91
- <p>
92
- Oh no...
93
- {error.message}
94
- </p>
95
- );
90
+ return <p className="text-critical">{error.message}</p>;
96
91
  }
97
92
 
98
93
  return (
@@ -22,7 +22,7 @@ export function Variant({
22
22
  </td>
23
23
  {variant.attributes.map((a) => (
24
24
  <td key={a.attributeId}>
25
- <label>{a.optionText}</label>
25
+ <label>{a.optionText || '--'}</label>
26
26
  </td>
27
27
  ))}
28
28
  <td>
@@ -2,20 +2,65 @@
2
2
  /* eslint-disable jsx-a11y/anchor-is-valid */
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
+ import { useQuery } from 'urql';
5
6
  import ProductMediaManager from '@components/admin/catalog/productEdit/media/ProductMediaManager';
6
7
  import { Field } from '@components/common/form/Field';
8
+ import { useFormContext } from '@components/common/form/Form';
9
+ import Spinner from '@components/common/Spinner';
10
+
11
+ const AttributesQuery = `
12
+ query Query($filters: [FilterInput]) {
13
+ attributes(filters: $filters) {
14
+ items {
15
+ attributeId
16
+ attributeCode
17
+ attributeName
18
+ options {
19
+ value: attributeOptionId
20
+ text: optionText
21
+ }
22
+ }
23
+ }
24
+ }
25
+ `;
7
26
 
8
27
  export function VariantModal({
9
28
  variant,
10
29
  variantAttributes,
11
30
  productImageUploadUrl
12
31
  }) {
32
+ const formContext = useFormContext();
13
33
  const image = variant?.product?.image;
14
34
  let gallery = variant?.product?.gallery || [];
15
35
 
16
36
  if (image) {
17
37
  gallery = [image].concat(gallery);
18
38
  }
39
+ const [result] = useQuery({
40
+ query: AttributesQuery,
41
+ variables: {
42
+ filters: [
43
+ {
44
+ key: 'code',
45
+ operation: 'in',
46
+ value: variantAttributes.map((a) => a.attributeCode).join(',')
47
+ }
48
+ ]
49
+ }
50
+ });
51
+
52
+ const { data, fetching, error } = result;
53
+ if (fetching) {
54
+ return (
55
+ <div className="p-3 flex justify-center items-center border rounded border-divider">
56
+ <Spinner width={30} height={30} />
57
+ </div>
58
+ );
59
+ }
60
+
61
+ if (error) {
62
+ return <p className="text-critical">{error.message}</p>;
63
+ }
19
64
  return (
20
65
  <div className="variant-item pb-15 border-b border-solid border-divider mb-15 last:border-b-0 last:pb-0">
21
66
  <div className="grid grid-cols-2 gap-x-1">
@@ -28,23 +73,34 @@ export function VariantModal({
28
73
  </div>
29
74
  <div className="col-span-1">
30
75
  <div className="grid grid-cols-2 gap-x-1 border-b border-divider pb-15 mb-15">
31
- {variantAttributes.map((a) => (
76
+ {data?.attributes?.items.map((a, index) => (
32
77
  <div key={a.attributeId} className="mt-1 col">
33
78
  <div>
34
79
  <label>{a.attributeName}</label>
35
80
  </div>
36
- <Field
81
+ <input
82
+ type="hidden"
83
+ name={`attributes[${index}][attribute_code]`}
84
+ value={a.attributeCode}
85
+ />
86
+ <input
87
+ type="hidden"
37
88
  name={a.attributeCode}
89
+ value={
90
+ formContext.fields.find(
91
+ (f) => f.name === `attributes[${index}][value]`
92
+ )?.value
93
+ }
94
+ />
95
+ <Field
96
+ name={`attributes[${index}][value]`}
38
97
  validationRules={['notEmpty']}
39
98
  value={
40
99
  variant?.attributes.find(
41
100
  (v) => v.attributeCode === a.attributeCode
42
101
  )?.optionId
43
102
  }
44
- options={a.options.map((o) => ({
45
- value: o.optionId,
46
- text: o.optionText
47
- }))}
103
+ options={a.options}
48
104
  type="select"
49
105
  />
50
106
  </div>
@@ -4,7 +4,7 @@ import { useQuery } from 'urql';
4
4
  import { Card } from '@components/admin/cms/Card';
5
5
  import { CreateVariant } from '@components/admin/catalog/productEdit/variants/CreateVariant';
6
6
  import Spinner from '@components/common/Spinner';
7
- import { Variant } from './Variant';
7
+ import { Variant } from '@components/admin/catalog/productEdit/variants/Variant';
8
8
 
9
9
  export const VariantQuery = `
10
10
  query Query($productId: ID!) {
@@ -0,0 +1,130 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { toast } from 'react-toastify';
4
+ import CogIcon from '@heroicons/react/outline/CogIcon';
5
+ import { useModal } from '@components/common/modal/useModal';
6
+ import MethodForm from '@components/admin/checkout/shippingSetting/MethodForm';
7
+
8
+ function Method({ method, getZones }) {
9
+ const modal = useModal();
10
+ return (
11
+ <>
12
+ <>
13
+ <td className="border-none py-1">{method.name}</td>
14
+ <td className="border-none py-1">
15
+ {method.isEnabled ? 'Enabled' : 'Disabled'}
16
+ </td>
17
+ <td className="border-none py-1">
18
+ {method.cost?.text || (
19
+ <a
20
+ href="#"
21
+ className="text-interactive"
22
+ onClick={(e) => {
23
+ e.preventDefault();
24
+ modal.openModal();
25
+ }}
26
+ >
27
+ <CogIcon width={22} height={22} />
28
+ </a>
29
+ )}
30
+ </td>
31
+ <td className="border-none py-1">
32
+ {method.conditionType
33
+ ? `${method.min || 0} <= ${method.conditionType} <= ${
34
+ method.max || '∞'
35
+ }`
36
+ : 'None'}
37
+ </td>
38
+ <td className="border-none py-1">
39
+ <a
40
+ href="#"
41
+ className="text-interactive"
42
+ onClick={(e) => {
43
+ e.preventDefault();
44
+ modal.openModal();
45
+ }}
46
+ >
47
+ Edit
48
+ </a>
49
+ <a
50
+ href="#"
51
+ className="text-critical ml-2"
52
+ onClick={async (e) => {
53
+ e.preventDefault();
54
+ try {
55
+ const response = await fetch(method.deleteApi, {
56
+ method: 'DELETE',
57
+ headers: {
58
+ 'Content-Type': 'application/json'
59
+ },
60
+ credentials: 'include'
61
+ });
62
+ if (response.ok) {
63
+ await getZones();
64
+ // Toast success
65
+ toast.success('Method removed successfully');
66
+ } else {
67
+ // Toast error
68
+ toast.error('Failed to remove method');
69
+ }
70
+ } catch (error) {
71
+ // Toast error
72
+ toast.error('Failed to remove method');
73
+ }
74
+ }}
75
+ >
76
+ Delete
77
+ </a>
78
+ </td>
79
+ </>
80
+ {modal.state.showing && (
81
+ <div className={modal.className} onAnimationEnd={modal.onAnimationEnd}>
82
+ <div
83
+ className="modal-wrapper flex self-center justify-center items-center"
84
+ tabIndex={-1}
85
+ role="dialog"
86
+ >
87
+ <div className="modal">
88
+ <MethodForm
89
+ saveMethodApi={method.updateApi}
90
+ closeModal={() => modal.closeModal()}
91
+ getZones={getZones}
92
+ method={method}
93
+ />
94
+ </div>
95
+ </div>
96
+ </div>
97
+ )}
98
+ </>
99
+ );
100
+ }
101
+
102
+ Method.propTypes = {
103
+ method: PropTypes.shape({
104
+ name: PropTypes.string.isRequired,
105
+ isEnabled: PropTypes.bool.isRequired,
106
+ cost: PropTypes.shape({
107
+ text: PropTypes.string.isRequired
108
+ }),
109
+ priceBasedCost: PropTypes.arrayOf(
110
+ PropTypes.shape({
111
+ minPrice: PropTypes.number.isRequired,
112
+ cost: PropTypes.number.isRequired
113
+ })
114
+ ),
115
+ weightBasedCost: PropTypes.arrayOf(
116
+ PropTypes.shape({
117
+ minWeight: PropTypes.number.isRequired,
118
+ cost: PropTypes.number.isRequired
119
+ })
120
+ ),
121
+ conditionType: PropTypes.string.isRequired,
122
+ min: PropTypes.number.isRequired,
123
+ max: PropTypes.number.isRequired,
124
+ updateApi: PropTypes.string.isRequired,
125
+ deleteApi: PropTypes.string.isRequired
126
+ }).isRequired,
127
+ getZones: PropTypes.func.isRequired
128
+ };
129
+
130
+ export default Method;