@webbycrown/webbycommerce 1.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 (78) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +588 -0
  3. package/bin/setup-debug.log +6 -0
  4. package/bin/setup.js +157 -0
  5. package/dist/_chunks/Settings-BTffXkdF.mjs +31213 -0
  6. package/dist/_chunks/Settings-CHavEmCV.js +31253 -0
  7. package/dist/_chunks/en-CN5945VW.mjs +504 -0
  8. package/dist/_chunks/en-Dj8IzRXD.js +504 -0
  9. package/dist/_chunks/index-BFH1VuAA.mjs +85 -0
  10. package/dist/_chunks/index-DXM6qeJr.js +84 -0
  11. package/dist/admin/index.js +3 -0
  12. package/dist/admin/index.mjs +4 -0
  13. package/dist/data/demo-data.json +654 -0
  14. package/dist/robots.txt +3 -0
  15. package/dist/server/index.js +10734 -0
  16. package/dist/uploads/.gitkeep +0 -0
  17. package/dist/uploads/accessories_category_2a5631094b.jpeg +0 -0
  18. package/dist/uploads/beauty_personal_care_category_57f8a8f1e3.jpeg +0 -0
  19. package/dist/uploads/books_category_a9a253eada.jpeg +0 -0
  20. package/dist/uploads/classic_cotton_tshirt_1_cd713425f6.png +0 -0
  21. package/dist/uploads/clothing_category_d5c60ef07b.jpeg +0 -0
  22. package/dist/uploads/daviddoe_strapi_adbcd41787.jpeg +0 -0
  23. package/dist/uploads/electronics_category_fc3e5ef571.jpeg +0 -0
  24. package/dist/uploads/ergonomic_office_chair_1_c751cffb07.png +0 -0
  25. package/dist/uploads/home_garden_category_4f6eb3f8d6.jpeg +0 -0
  26. package/dist/uploads/istockphoto_1188462138_612x612_11f295b9c0.jpg +0 -0
  27. package/dist/uploads/istockphoto_1188462138_612x612_396fb272fd.jpg +0 -0
  28. package/dist/uploads/large_daviddoe_strapi_adbcd41787.jpeg +0 -0
  29. package/dist/uploads/leather_travel_backpack_1_238bc1ae4d.png +0 -0
  30. package/dist/uploads/mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  31. package/dist/uploads/medium_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  32. package/dist/uploads/medium_daviddoe_strapi_adbcd41787.jpeg +0 -0
  33. package/dist/uploads/medium_ergonomic_office_chair_1_c751cffb07.png +0 -0
  34. package/dist/uploads/medium_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  35. package/dist/uploads/medium_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  36. package/dist/uploads/medium_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  37. package/dist/uploads/medium_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  38. package/dist/uploads/medium_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  39. package/dist/uploads/medium_wireless_headphones_1_fa75cd50c3.png +0 -0
  40. package/dist/uploads/medium_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  41. package/dist/uploads/predictive_maintenance_icons_industry_automation_600nw_2685943461_e18a8aa3b0.webp +0 -0
  42. package/dist/uploads/small_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  43. package/dist/uploads/small_daviddoe_strapi_adbcd41787.jpeg +0 -0
  44. package/dist/uploads/small_ergonomic_office_chair_1_c751cffb07.png +0 -0
  45. package/dist/uploads/small_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  46. package/dist/uploads/small_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  47. package/dist/uploads/small_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  48. package/dist/uploads/small_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  49. package/dist/uploads/small_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  50. package/dist/uploads/small_wireless_headphones_1_fa75cd50c3.png +0 -0
  51. package/dist/uploads/small_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  52. package/dist/uploads/smart_watch_series_5_1_cdc2511fb7.png +0 -0
  53. package/dist/uploads/smartphone_x_pro_1_c3f0cbd080.png +0 -0
  54. package/dist/uploads/the_great_gatsby_special_1_2e7c76d997.png +0 -0
  55. package/dist/uploads/thumbnail_accessories_category_2a5631094b.jpeg +0 -0
  56. package/dist/uploads/thumbnail_beauty_personal_care_category_57f8a8f1e3.jpeg +0 -0
  57. package/dist/uploads/thumbnail_books_category_a9a253eada.jpeg +0 -0
  58. package/dist/uploads/thumbnail_classic_cotton_tshirt_1_cd713425f6.png +0 -0
  59. package/dist/uploads/thumbnail_clothing_category_d5c60ef07b.jpeg +0 -0
  60. package/dist/uploads/thumbnail_daviddoe_strapi_adbcd41787.jpeg +0 -0
  61. package/dist/uploads/thumbnail_electronics_category_fc3e5ef571.jpeg +0 -0
  62. package/dist/uploads/thumbnail_ergonomic_office_chair_1_c751cffb07.png +0 -0
  63. package/dist/uploads/thumbnail_home_garden_category_4f6eb3f8d6.jpeg +0 -0
  64. package/dist/uploads/thumbnail_istockphoto_1188462138_612x612_11f295b9c0.jpg +0 -0
  65. package/dist/uploads/thumbnail_istockphoto_1188462138_612x612_396fb272fd.jpg +0 -0
  66. package/dist/uploads/thumbnail_leather_travel_backpack_1_238bc1ae4d.png +0 -0
  67. package/dist/uploads/thumbnail_mechanical_keyboard_pro_1_0cd391a6ac.png +0 -0
  68. package/dist/uploads/thumbnail_predictive_maintenance_icons_industry_automation_600nw_2685943461_e18a8aa3b0.webp +0 -0
  69. package/dist/uploads/thumbnail_smart_watch_series_5_1_cdc2511fb7.png +0 -0
  70. package/dist/uploads/thumbnail_smartphone_x_pro_1_c3f0cbd080.png +0 -0
  71. package/dist/uploads/thumbnail_the_great_gatsby_special_1_2e7c76d997.png +0 -0
  72. package/dist/uploads/thumbnail_wireless_headphones_1_fa75cd50c3.png +0 -0
  73. package/dist/uploads/thumbnail_yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  74. package/dist/uploads/webby-commerce.png +0 -0
  75. package/dist/uploads/wireless_headphones_1_fa75cd50c3.png +0 -0
  76. package/dist/uploads/yoga_mat_premium_1_01f9a3b5fa.png +0 -0
  77. package/package.json +81 -0
  78. package/strapi-server.js +9 -0
package/bin/setup.js ADDED
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+
3
+ 'use strict';
4
+
5
+ const readline = require('readline');
6
+ const path = require('path');
7
+ const fs = require('fs');
8
+
9
+ // Global log function to be accessible everywhere
10
+ const projectRoot = process.cwd();
11
+ const logPath = path.join(projectRoot, 'ecommerce-setup-debug.log');
12
+ const log = (msg) => {
13
+ try {
14
+ fs.appendFileSync(logPath, `[${new Date().toISOString()}] ${msg}\n`);
15
+ } catch (e) {
16
+ // Ignore logging errors
17
+ }
18
+ };
19
+
20
+ /**
21
+ * Setup script for @webbycrown/webbycommerce
22
+ */
23
+ async function setup() {
24
+ let ttyIn, ttyOut;
25
+ let isInteractive = false;
26
+
27
+ log('--- Setup Started ---');
28
+ log('Platform: ' + process.platform);
29
+ log('CWD: ' + projectRoot);
30
+ log('Is TTY: ' + process.stdout.isTTY);
31
+ log('Is Interactive: ' + (process.stdout.isTTY && process.stdin.isTTY));
32
+
33
+ try {
34
+ // Check if we're running in an interactive environment
35
+ isInteractive = process.stdout.isTTY && process.stdin.isTTY;
36
+
37
+ if (isInteractive) {
38
+ if (process.platform === 'win32') {
39
+ log('Attempting to open Windows console devices...');
40
+ try {
41
+ const fdIn = fs.openSync('CONIN$', 'r');
42
+ const fdOut = fs.openSync('CONOUT$', 'w');
43
+ ttyIn = fs.createReadStream(null, { fd: fdIn });
44
+ ttyOut = fs.createWriteStream(null, { fd: fdOut });
45
+ log('Opened CONIN$/CONOUT$ successfully');
46
+ } catch (e) {
47
+ log('CONIN$/CONOUT$ failed, falling back to process streams: ' + e.message);
48
+ ttyIn = process.stdin;
49
+ ttyOut = process.stdout;
50
+ }
51
+ } else {
52
+ try {
53
+ ttyIn = fs.createReadStream('/dev/tty');
54
+ ttyOut = fs.createWriteStream('/dev/tty');
55
+ log('Opened /dev/tty successfully');
56
+ } catch (e) {
57
+ log('/dev/tty failed, falling back to process streams');
58
+ ttyIn = process.stdin;
59
+ ttyOut = process.stdout;
60
+ }
61
+ }
62
+ } else {
63
+ // Non-interactive environment (like local npm install)
64
+ log('Non-interactive environment detected, skipping interactive prompts');
65
+ ttyIn = process.stdin;
66
+ ttyOut = process.stdout;
67
+ }
68
+
69
+ const rl = readline.createInterface({
70
+ input: ttyIn,
71
+ output: ttyOut,
72
+ terminal: true
73
+ });
74
+
75
+ const question = (query) => new Promise((resolve) => {
76
+ if (!isInteractive) {
77
+ // In non-interactive environments, check environment variable or default to 'n'
78
+ const envSeed = process.env.STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA;
79
+ if (envSeed === 'true' || envSeed === '1' || envSeed === 'yes') {
80
+ log('Non-interactive mode: STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA=true detected');
81
+ resolve('y');
82
+ } else {
83
+ log('Non-interactive mode: no seeding requested');
84
+ resolve('n');
85
+ }
86
+ return;
87
+ }
88
+
89
+ const timer = setTimeout(() => {
90
+ if (ttyOut && ttyOut.writable) ttyOut.write('\nā° Setup timed out. Skipping...\n');
91
+ resolve('n');
92
+ }, 60000);
93
+
94
+ rl.question(query, (answer) => {
95
+ clearTimeout(timer);
96
+ resolve(answer);
97
+ });
98
+ });
99
+
100
+ const print = (msg) => {
101
+ if (ttyOut && ttyOut.writable) ttyOut.write(msg + '\n');
102
+ log('Output: ' + msg);
103
+ };
104
+
105
+ print('\nšŸ›ļø @webbycrown/webbycommerce Setup');
106
+ print('===============================================');
107
+ print('');
108
+
109
+ if (!isInteractive) {
110
+ print('šŸ”§ Non-interactive installation detected.');
111
+ print(' To seed demo data, set: STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA=true');
112
+ print(' Or run setup manually: npx strapi-ecommerce-setup');
113
+ print('');
114
+ }
115
+
116
+ // Prompt for seeding demo data (only in interactive mode)
117
+ const seedAnswer = await question('Would you like to seed example data? (y/n): ');
118
+ const shouldSeed = seedAnswer.toLowerCase().trim() === 'y';
119
+
120
+ 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.');
124
+ print('');
125
+ } else {
126
+ print('ā„¹ļø Demo data seeding skipped.');
127
+ print('');
128
+ }
129
+
130
+ print('šŸ“‹ Installation complete! Next steps:');
131
+ print('1. Start your Strapi application: npm run develop');
132
+
133
+ if (shouldSeed) {
134
+ print('2. Demo data will be automatically seeded during startup');
135
+ print('3. Visit your Strapi Admin to explore the seeded data');
136
+ } else {
137
+ print('2. Go to Strapi Admin > Settings > Advanced Ecommerce');
138
+ print('3. Click "Seed Demo Data" to populate your store with sample products');
139
+ }
140
+
141
+ print('');
142
+ print('šŸ’” Additional options:');
143
+ print('• To seed data programmatically, set: STRAPI_PLUGIN_ADVANCED_ECOMMERCE_SEED_DATA=true');
144
+ print('• To run setup manually: npx strapi-ecommerce-setup');
145
+ print('');
146
+
147
+ rl.close();
148
+ } catch (error) {
149
+ log('FATAL ERROR: ' + error.message + '\n' + error.stack);
150
+ if (ttyOut && ttyOut.writable) ttyOut.write('\nāŒ Setup encounterd an error. See ecommerce-setup-debug.log for details.\n');
151
+ }
152
+ }
153
+
154
+ setup().then(() => {
155
+ log('--- Setup Finished ---');
156
+ if (require.main === module) process.exit(0);
157
+ });