@webbycrown/webbycommerce 1.2.0 → 2.0.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 (162) hide show
  1. package/README.md +26 -3
  2. package/admin/app.js +3 -0
  3. package/admin/jsconfig.json +20 -0
  4. package/admin/src/components/ApiCollectionsContent.jsx +4626 -0
  5. package/admin/src/components/CompareContent.jsx +300 -0
  6. package/admin/src/components/ConfigureContent.jsx +407 -0
  7. package/admin/src/components/Initializer.jsx +64 -0
  8. package/admin/src/components/LoginRegisterContent.jsx +280 -0
  9. package/admin/src/components/PluginIcon.jsx +6 -0
  10. package/admin/src/components/ShippingTypeContent.jsx +230 -0
  11. package/admin/src/components/SmtpContent.jsx +316 -0
  12. package/admin/src/components/WishlistContent.jsx +273 -0
  13. package/admin/src/index.js +81 -0
  14. package/admin/src/pages/ApiCollections.jsx +169 -0
  15. package/admin/src/pages/Configure.jsx +55 -0
  16. package/admin/src/pages/Settings.jsx +93 -0
  17. package/admin/src/pluginId.js +4 -0
  18. package/{dist/_chunks/en-CiQ97iC8.js → admin/src/translations/en.json} +712 -574
  19. package/bin/setup.js +50 -3
  20. package/package.json +14 -13
  21. package/server/bootstrap.js +3 -0
  22. package/server/register.js +3 -0
  23. package/server/src/bootstrap.js +3826 -0
  24. package/server/src/components/content-block.json +37 -0
  25. package/server/src/components/shipping-zone-location.json +27 -0
  26. package/server/src/config/index.js +7 -0
  27. package/server/src/content-types/address/index.js +7 -0
  28. package/server/src/content-types/address/schema.json +74 -0
  29. package/server/src/content-types/cart/index.js +61 -0
  30. package/server/src/content-types/cart-item/index.js +79 -0
  31. package/server/src/content-types/compare.js +73 -0
  32. package/server/src/content-types/coupon/index.js +7 -0
  33. package/server/src/content-types/coupon/schema.json +67 -0
  34. package/server/src/content-types/index.js +42 -0
  35. package/server/src/content-types/order/index.js +7 -0
  36. package/server/src/content-types/order/schema.json +121 -0
  37. package/server/src/content-types/payment-transaction/index.js +7 -0
  38. package/server/src/content-types/payment-transaction/schema.json +73 -0
  39. package/server/src/content-types/product/index.js +7 -0
  40. package/server/src/content-types/product/schema.json +104 -0
  41. package/server/src/content-types/product-attribute/index.js +7 -0
  42. package/server/src/content-types/product-attribute/schema.json +80 -0
  43. package/server/src/content-types/product-attribute-value/index.js +7 -0
  44. package/server/src/content-types/product-attribute-value/schema.json +52 -0
  45. package/server/src/content-types/product-category/index.js +7 -0
  46. package/server/src/content-types/product-category/schema.json +54 -0
  47. package/server/src/content-types/product-tag/index.js +7 -0
  48. package/server/src/content-types/product-tag/schema.json +38 -0
  49. package/server/src/content-types/product-variation/index.js +7 -0
  50. package/server/src/content-types/product-variation/schema.json +74 -0
  51. package/server/src/content-types/shipping-method/index.js +7 -0
  52. package/server/src/content-types/shipping-method/schema.json +91 -0
  53. package/server/src/content-types/shipping-rate/index.js +7 -0
  54. package/server/src/content-types/shipping-rate/schema.json +73 -0
  55. package/server/src/content-types/shipping-rule/index.js +7 -0
  56. package/server/src/content-types/shipping-rule/schema.json +84 -0
  57. package/server/src/content-types/shipping-zone/index.js +7 -0
  58. package/server/src/content-types/shipping-zone/schema.json +57 -0
  59. package/server/src/content-types/wishlist.js +66 -0
  60. package/server/src/controllers/address.js +374 -0
  61. package/server/src/controllers/auth.js +1409 -0
  62. package/server/src/controllers/cart.js +337 -0
  63. package/server/src/controllers/category.js +388 -0
  64. package/server/src/controllers/compare.js +246 -0
  65. package/server/src/controllers/controller.js +168 -0
  66. package/server/src/controllers/ecommerce.js +20 -0
  67. package/server/src/controllers/index.js +34 -0
  68. package/server/src/controllers/order.js +1100 -0
  69. package/server/src/controllers/payment.js +243 -0
  70. package/server/src/controllers/product.js +1006 -0
  71. package/server/src/controllers/productTag.js +370 -0
  72. package/server/src/controllers/productVariation.js +181 -0
  73. package/server/src/controllers/shipping.js +1046 -0
  74. package/server/src/controllers/wishlist.js +332 -0
  75. package/server/src/destroy.js +6 -0
  76. package/server/src/index.js +26 -0
  77. package/server/src/middlewares/index.js +4 -0
  78. package/server/src/policies/index.js +4 -0
  79. package/server/src/register.js +67 -0
  80. package/server/src/routes/index.js +1130 -0
  81. package/server/src/services/cart.js +531 -0
  82. package/server/src/services/compare.js +300 -0
  83. package/server/src/services/index.js +16 -0
  84. package/server/src/services/service.js +19 -0
  85. package/server/src/services/shipping.js +513 -0
  86. package/server/src/services/wishlist.js +238 -0
  87. package/server/src/utils/check-ecommerce-permission.js +204 -0
  88. package/server/src/utils/extend-user-schema.js +161 -0
  89. package/server/src/utils/seed-data.js +639 -0
  90. package/server/src/utils/send-email.js +98 -0
  91. package/strapi-server.js +1 -6
  92. package/dist/_chunks/Settings-DZXAkI24.js +0 -31539
  93. package/dist/_chunks/Settings-yLx-YvVy.mjs +0 -31520
  94. package/dist/_chunks/en-DE15m4xZ.mjs +0 -574
  95. package/dist/_chunks/index-CXGrFKp6.mjs +0 -128
  96. package/dist/_chunks/index-DgocXUgC.js +0 -127
  97. package/dist/admin/index.js +0 -3
  98. package/dist/admin/index.mjs +0 -4
  99. package/dist/robots.txt +0 -3
  100. package/dist/server/index.js +0 -27078
  101. package/dist/uploads/.gitkeep +0 -0
  102. package/dist/uploads/accessories_category_2a5631094b.jpeg +0 -0
  103. package/dist/uploads/beauty_personal_care_category_57f8a8f1e3.jpeg +0 -0
  104. package/dist/uploads/books_category_a9a253eada.jpeg +0 -0
  105. package/dist/uploads/classic_cotton_tshirt_1_cd713425f6.png +0 -0
  106. package/dist/uploads/clothing_category_d5c60ef07b.jpeg +0 -0
  107. package/dist/uploads/daviddoe_strapi_adbcd41787.jpeg +0 -0
  108. package/dist/uploads/electronics_category_fc3e5ef571.jpeg +0 -0
  109. package/dist/uploads/ergonomic_office_chair_1_c751cffb07.png +0 -0
  110. package/dist/uploads/home_garden_category_4f6eb3f8d6.jpeg +0 -0
  111. package/dist/uploads/istockphoto_1188462138_612x612_11f295b9c0.jpg +0 -0
  112. package/dist/uploads/istockphoto_1188462138_612x612_396fb272fd.jpg +0 -0
  113. package/dist/uploads/large_daviddoe_strapi_adbcd41787.jpeg +0 -0
  114. package/dist/uploads/leather_travel_backpack_1_238bc1ae4d.png +0 -0
  115. package/dist/uploads/mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  116. package/dist/uploads/medium_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  117. package/dist/uploads/medium_daviddoe_strapi_adbcd41787.jpeg +0 -0
  118. package/dist/uploads/medium_ergonomic_office_chair_1_c751cffb07.png +0 -0
  119. package/dist/uploads/medium_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  120. package/dist/uploads/medium_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  121. package/dist/uploads/medium_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  122. package/dist/uploads/medium_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  123. package/dist/uploads/medium_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  124. package/dist/uploads/medium_wireless_headphones_1_fa75cd50c3.png +0 -0
  125. package/dist/uploads/medium_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  126. package/dist/uploads/predictive_maintenance_icons_industry_automation_600nw_2685943461_e18a8aa3b0.webp +0 -0
  127. package/dist/uploads/small_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  128. package/dist/uploads/small_daviddoe_strapi_adbcd41787.jpeg +0 -0
  129. package/dist/uploads/small_ergonomic_office_chair_1_c751cffb07.png +0 -0
  130. package/dist/uploads/small_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  131. package/dist/uploads/small_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  132. package/dist/uploads/small_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  133. package/dist/uploads/small_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  134. package/dist/uploads/small_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  135. package/dist/uploads/small_wireless_headphones_1_fa75cd50c3.png +0 -0
  136. package/dist/uploads/small_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  137. package/dist/uploads/smart_watch_series_5_1_cdc2511fb7.png +0 -0
  138. package/dist/uploads/smartphone_x_pro_1_c3f0cbd080.png +0 -0
  139. package/dist/uploads/the_great_gatsby_special_1_2e7c76d997.png +0 -0
  140. package/dist/uploads/thumbnail_accessories_category_2a5631094b.jpeg +0 -0
  141. package/dist/uploads/thumbnail_beauty_personal_care_category_57f8a8f1e3.jpeg +0 -0
  142. package/dist/uploads/thumbnail_books_category_a9a253eada.jpeg +0 -0
  143. package/dist/uploads/thumbnail_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  144. package/dist/uploads/thumbnail_clothing_category_d5c60ef07b.jpeg +0 -0
  145. package/dist/uploads/thumbnail_daviddoe_strapi_adbcd41787.jpeg +0 -0
  146. package/dist/uploads/thumbnail_electronics_category_fc3e5ef571.jpeg +0 -0
  147. package/dist/uploads/thumbnail_ergonomic_office_chair_1_c751cffb07.png +0 -0
  148. package/dist/uploads/thumbnail_home_garden_category_4f6eb3f8d6.jpeg +0 -0
  149. package/dist/uploads/thumbnail_istockphoto_1188462138_612x612_11f295b9c0.jpg +0 -0
  150. package/dist/uploads/thumbnail_istockphoto_1188462138_612x612_396fb272fd.jpg +0 -0
  151. package/dist/uploads/thumbnail_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  152. package/dist/uploads/thumbnail_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  153. package/dist/uploads/thumbnail_predictive_maintenance_icons_industry_automation_600nw_2685943461_e18a8aa3b0.webp +0 -0
  154. package/dist/uploads/thumbnail_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  155. package/dist/uploads/thumbnail_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  156. package/dist/uploads/thumbnail_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  157. package/dist/uploads/thumbnail_wireless_headphones_1_fa75cd50c3.png +0 -0
  158. package/dist/uploads/thumbnail_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  159. package/dist/uploads/webby-commerce.png +0 -0
  160. package/dist/uploads/wireless_headphones_1_fa75cd50c3.png +0 -0
  161. package/dist/uploads/yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  162. /package/{dist → server/src}/data/demo-data.json +0 -0
package/bin/setup.js CHANGED
@@ -17,6 +17,31 @@ const log = (msg) => {
17
17
  }
18
18
  };
19
19
 
20
+ /**
21
+ * Upsert a key/value pair in a dotenv-style file.
22
+ * - Replaces only exact `KEY=...` lines.
23
+ * - Creates the file if it doesn't exist.
24
+ */
25
+ function upsertEnvVar(envFilePath, key, value) {
26
+ const os = require('os');
27
+ const eol = os.EOL;
28
+ const desiredLine = `${key}=${value}`;
29
+
30
+ let current = '';
31
+ if (fs.existsSync(envFilePath)) {
32
+ current = fs.readFileSync(envFilePath, 'utf8');
33
+ }
34
+
35
+ const keyRegex = new RegExp(`^${key}=.*$`, 'm');
36
+ if (keyRegex.test(current)) {
37
+ return current.replace(keyRegex, desiredLine);
38
+ }
39
+
40
+ const needsNewline = current.length > 0 && !current.endsWith('\n') && !current.endsWith('\r\n');
41
+ if (!current.length) return desiredLine + eol;
42
+ return current + (needsNewline ? eol : '') + desiredLine + eol;
43
+ }
44
+
20
45
  /**
21
46
  * Setup script for @webbycrown/webbycommerce
22
47
  */
@@ -118,9 +143,31 @@ async function setup() {
118
143
  const shouldSeed = seedAnswer.toLowerCase().trim() === 'y';
119
144
 
120
145
  if (shouldSeed) {
121
- // Set environment variable for seeding
122
- process.env.STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA = 'true';
123
- print('✅ Demo data will be seeded when you start Strapi.');
146
+ const key = 'STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA';
147
+ const value = 'true';
148
+
149
+ // Set environment variable for the current process (useful if user starts Strapi from the same command context).
150
+ process.env[key] = value;
151
+
152
+ // Also persist it to `.env` so the next Strapi startup actually seeds.
153
+ // Usually this script is executed from the Strapi project root, not from within `node_modules`.
154
+ const isLikelyStrapiProject =
155
+ fs.existsSync(path.join(projectRoot, 'config')) &&
156
+ fs.existsSync(path.join(projectRoot, 'package.json'));
157
+
158
+ if (isLikelyStrapiProject) {
159
+ try {
160
+ const envFilePath = path.join(projectRoot, '.env');
161
+ const updated = upsertEnvVar(envFilePath, key, value);
162
+ fs.writeFileSync(envFilePath, updated, 'utf8');
163
+ print(`✅ Set ${key}=true in ${path.join(projectRoot, '.env')}. Restart Strapi to seed demo data.`);
164
+ } catch (e) {
165
+ print(`⚠️ Could not update .env automatically (${e.message}). You can manually set ${key}=true and restart Strapi.`);
166
+ }
167
+ } else {
168
+ print(`✅ Demo data will be seeded when you start Strapi (set ${key}=true in your Strapi project's .env).`);
169
+ }
170
+
124
171
  print('');
125
172
  } else {
126
173
  print('ℹ️ Demo data seeding skipped.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webbycrown/webbycommerce",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "keywords": [
5
5
  "strapi",
6
6
  "plugin",
@@ -17,24 +17,22 @@
17
17
  "./package.json": "./package.json",
18
18
  "./strapi-admin": {
19
19
  "source": "./admin/src/index.js",
20
- "import": "./dist/admin/index.mjs",
21
- "require": "./dist/admin/index.js",
22
- "default": "./dist/admin/index.js"
20
+ "import": "./admin/src/index.js",
21
+ "default": "./admin/src/index.js"
23
22
  },
24
- "./strapi-server": "./dist/server/index.js"
23
+ "./strapi-server": "./server/src/index.js"
25
24
  },
26
25
  "files": [
27
- "dist",
26
+ "admin",
27
+ "server",
28
28
  "bin",
29
29
  "strapi-server.js",
30
30
  "README.md",
31
31
  "LICENSE"
32
32
  ],
33
33
  "scripts": {
34
- "build": "npm run build:admin && npm run build:server && npm run postbuild",
34
+ "build": "strapi-plugin build",
35
35
  "build:admin": "strapi-plugin build",
36
- "build:server": "esbuild server/src/index.js --bundle --platform=node --format=cjs --outfile=dist/server/index.js --external:@strapi/*",
37
- "postbuild": "node -e \"const fs = require('fs'); const path = require('path'); const src = path.join('server', 'src', 'data', 'demo-data.json'); const dest = path.join('dist', 'data', 'demo-data.json'); fs.mkdirSync(path.dirname(dest), { recursive: true }); fs.copyFileSync(src, dest); console.log('Copied demo data to dist/data/');\"",
38
36
  "watch": "strapi-plugin watch",
39
37
  "watch:link": "strapi-plugin watch:link",
40
38
  "verify": "strapi-plugin verify",
@@ -48,16 +46,14 @@
48
46
  },
49
47
  "devDependencies": {
50
48
  "@strapi/sdk-plugin": "^5.3.2",
51
- "@strapi/strapi": "^5.36.0",
52
- "esbuild": "^0.27.2",
49
+ "@strapi/strapi": "^5.0.0",
53
50
  "prettier": "^3.5.3",
54
51
  "react": "^18.3.1",
55
52
  "react-dom": "^18.3.1",
56
53
  "styled-components": "^6.1.17"
57
54
  },
58
55
  "peerDependencies": {
59
- "@strapi/sdk-plugin": "^5.3.2",
60
- "@strapi/strapi": "^5.36.0",
56
+ "@strapi/strapi": "^5.0.0",
61
57
  "react": "^18.3.1",
62
58
  "react-dom": "^18.3.1",
63
59
  "styled-components": "^6.1.17"
@@ -69,6 +65,11 @@
69
65
  "description": "Complete ecommerce solution for Strapi: products, cart, orders, payments, and more with role-based permissions."
70
66
  },
71
67
  "description": "Complete ecommerce solution for Strapi: products, cart, orders, payments, and more with role-based permissions.",
68
+ "homepage": "https://github.com/webbycrown/webbycommerce#readme",
69
+ "repository": {
70
+ "type": "git",
71
+ "url": "git+https://github.com/webbycrown/webbycommerce.git"
72
+ },
72
73
  "license": "MIT",
73
74
  "author": {
74
75
  "name": "WebbyCrown",
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ module.exports = require('./src/bootstrap');
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ module.exports = require('./src/register');