@primershop/strapi-plugin-product-actions 0.0.1

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 (83) hide show
  1. package/README.md +38 -0
  2. package/dist/admin/components/Initializer/index.js +17 -0
  3. package/dist/admin/components/Initializer/index.js.map +1 -0
  4. package/dist/admin/components/Initializer/index.mjs +15 -0
  5. package/dist/admin/components/Initializer/index.mjs.map +1 -0
  6. package/dist/admin/components/SeriesProductActions/index.js +229 -0
  7. package/dist/admin/components/SeriesProductActions/index.js.map +1 -0
  8. package/dist/admin/components/SeriesProductActions/index.mjs +227 -0
  9. package/dist/admin/components/SeriesProductActions/index.mjs.map +1 -0
  10. package/dist/admin/index.js +28 -0
  11. package/dist/admin/index.js.map +1 -0
  12. package/dist/admin/index.mjs +26 -0
  13. package/dist/admin/index.mjs.map +1 -0
  14. package/dist/admin/pluginId.js +6 -0
  15. package/dist/admin/pluginId.js.map +1 -0
  16. package/dist/admin/pluginId.mjs +4 -0
  17. package/dist/admin/pluginId.mjs.map +1 -0
  18. package/dist/admin/src/components/Initializer/index.js +13 -0
  19. package/dist/admin/src/components/SeriesProductActions/index.js +84 -0
  20. package/dist/admin/src/index.js +22 -0
  21. package/dist/admin/src/pluginId.js +1 -0
  22. package/dist/admin/src/translations/en.js +21 -0
  23. package/dist/admin/src/translations/index.js +1 -0
  24. package/dist/admin/translations/en.js +25 -0
  25. package/dist/admin/translations/en.js.map +1 -0
  26. package/dist/admin/translations/en.mjs +23 -0
  27. package/dist/admin/translations/en.mjs.map +1 -0
  28. package/dist/server/bootstrap.js +15 -0
  29. package/dist/server/bootstrap.js.map +1 -0
  30. package/dist/server/bootstrap.mjs +13 -0
  31. package/dist/server/bootstrap.mjs.map +1 -0
  32. package/dist/server/controllers/index.js +10 -0
  33. package/dist/server/controllers/index.js.map +1 -0
  34. package/dist/server/controllers/index.mjs +8 -0
  35. package/dist/server/controllers/index.mjs.map +1 -0
  36. package/dist/server/controllers/product-series.js +29 -0
  37. package/dist/server/controllers/product-series.js.map +1 -0
  38. package/dist/server/controllers/product-series.mjs +27 -0
  39. package/dist/server/controllers/product-series.mjs.map +1 -0
  40. package/dist/server/index.js +24 -0
  41. package/dist/server/index.js.map +1 -0
  42. package/dist/server/index.mjs +19 -0
  43. package/dist/server/index.mjs.map +1 -0
  44. package/dist/server/permissions.js +46 -0
  45. package/dist/server/permissions.js.map +1 -0
  46. package/dist/server/permissions.mjs +44 -0
  47. package/dist/server/permissions.mjs.map +1 -0
  48. package/dist/server/pluginId.js +6 -0
  49. package/dist/server/pluginId.js.map +1 -0
  50. package/dist/server/pluginId.mjs +4 -0
  51. package/dist/server/pluginId.mjs.map +1 -0
  52. package/dist/server/register.js +16 -0
  53. package/dist/server/register.js.map +1 -0
  54. package/dist/server/register.mjs +14 -0
  55. package/dist/server/register.mjs.map +1 -0
  56. package/dist/server/routes/admin.js +44 -0
  57. package/dist/server/routes/admin.js.map +1 -0
  58. package/dist/server/routes/admin.mjs +42 -0
  59. package/dist/server/routes/admin.mjs.map +1 -0
  60. package/dist/server/routes/index.js +10 -0
  61. package/dist/server/routes/index.js.map +1 -0
  62. package/dist/server/routes/index.mjs +8 -0
  63. package/dist/server/routes/index.mjs.map +1 -0
  64. package/dist/server/services/index.js +10 -0
  65. package/dist/server/services/index.js.map +1 -0
  66. package/dist/server/services/index.mjs +8 -0
  67. package/dist/server/services/index.mjs.map +1 -0
  68. package/dist/server/services/product-series.js +113 -0
  69. package/dist/server/services/product-series.js.map +1 -0
  70. package/dist/server/services/product-series.mjs +111 -0
  71. package/dist/server/services/product-series.mjs.map +1 -0
  72. package/dist/server/src/bootstrap.js +16 -0
  73. package/dist/server/src/controllers/index.js +10 -0
  74. package/dist/server/src/controllers/product-series.js +31 -0
  75. package/dist/server/src/index.js +20 -0
  76. package/dist/server/src/permissions.js +42 -0
  77. package/dist/server/src/pluginId.js +4 -0
  78. package/dist/server/src/register.js +14 -0
  79. package/dist/server/src/routes/admin.js +37 -0
  80. package/dist/server/src/routes/index.js +9 -0
  81. package/dist/server/src/services/index.js +7 -0
  82. package/dist/server/src/services/product-series.js +116 -0
  83. package/package.json +100 -0
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.productSeriesService = void 0;
4
+ const productSeriesService = ({ strapi }) => ({
5
+ async createProductsFromSeries(seriesId, count = 1) {
6
+ var _a, _b;
7
+ const series = await getSeries(strapi, seriesId);
8
+ const products = [];
9
+ const startIndex = ((_a = series.products) === null || _a === void 0 ? void 0 : _a.length) || 0;
10
+ for (let i = 0; i < count; i++) {
11
+ const index = startIndex + i;
12
+ // Create product with series data
13
+ const product = await strapi.documents("api::product.product").create({
14
+ data: {
15
+ name: `${series.name} #${index + 1}`,
16
+ slug: `${series.slug}-${index + 1}`,
17
+ series: {
18
+ set: seriesId,
19
+ },
20
+ seriesIndex: index,
21
+ category: series.category
22
+ ? {
23
+ set: series.category.documentId,
24
+ }
25
+ : null,
26
+ creator: series.creator
27
+ ? {
28
+ set: (_b = series.creator) === null || _b === void 0 ? void 0 : _b.documentId,
29
+ }
30
+ : null,
31
+ publishedAt: undefined,
32
+ // Copy all required fields from series
33
+ description: series.description,
34
+ shortDescription: series.shortDescription,
35
+ media: series.media,
36
+ coverImage: series.coverImage,
37
+ seo: series.seo,
38
+ totalCost: series.totalCost,
39
+ wholesalePrice: series.wholesalePrice,
40
+ retailPrice: series.retailPrice,
41
+ },
42
+ });
43
+ products.push(product);
44
+ }
45
+ return products;
46
+ },
47
+ async updateSeriesProducts(seriesId, fieldsToUpdate) {
48
+ var _a, _b, _c;
49
+ const series = await getSeries(strapi, seriesId);
50
+ const dataToUpdate = {};
51
+ if (fieldsToUpdate.includes("description")) {
52
+ dataToUpdate.description = series.description;
53
+ }
54
+ if (fieldsToUpdate.includes("shortDescription")) {
55
+ dataToUpdate.shortDescription = series.shortDescription;
56
+ }
57
+ if (fieldsToUpdate.includes("media")) {
58
+ dataToUpdate.media = series.media;
59
+ }
60
+ if (fieldsToUpdate.includes("coverImage")) {
61
+ dataToUpdate.coverImage = series.coverImage;
62
+ }
63
+ if (fieldsToUpdate.includes("seo")) {
64
+ dataToUpdate.seo = series.seo;
65
+ }
66
+ if (fieldsToUpdate.includes("totalCost")) {
67
+ dataToUpdate.totalCost = series.totalCost;
68
+ }
69
+ if (fieldsToUpdate.includes("wholesalePrice")) {
70
+ dataToUpdate.wholesalePrice = series.wholesalePrice;
71
+ }
72
+ if (fieldsToUpdate.includes("retailPrice")) {
73
+ dataToUpdate.retailPrice = series.retailPrice;
74
+ }
75
+ if (fieldsToUpdate.includes("category")) {
76
+ dataToUpdate.category = {
77
+ set: [(_a = series.category) === null || _a === void 0 ? void 0 : _a.documentId],
78
+ };
79
+ }
80
+ if (fieldsToUpdate.includes("creator")) {
81
+ dataToUpdate.creator = {
82
+ set: [(_b = series.creator) === null || _b === void 0 ? void 0 : _b.documentId],
83
+ };
84
+ }
85
+ const updatePromises = (_c = series.products) === null || _c === void 0 ? void 0 : _c.map((product) => strapi.documents("api::product.product").update({
86
+ documentId: product.documentId,
87
+ data: {
88
+ ...dataToUpdate,
89
+ },
90
+ }));
91
+ if (updatePromises) {
92
+ await Promise.all(updatePromises);
93
+ }
94
+ return true;
95
+ },
96
+ });
97
+ exports.productSeriesService = productSeriesService;
98
+ async function getSeries(strapi, seriesId) {
99
+ const series = await strapi
100
+ .documents("api::product-series.product-series")
101
+ .findOne({
102
+ documentId: seriesId,
103
+ populate: [
104
+ "products",
105
+ "category",
106
+ "creator",
107
+ "media",
108
+ "coverImage",
109
+ "seo",
110
+ ],
111
+ });
112
+ if (!series) {
113
+ throw new Error("Series not found");
114
+ }
115
+ return series;
116
+ }
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "@primershop/strapi-plugin-product-actions",
3
+ "version": "0.0.1",
4
+ "description": "Enables product actions for Strapi",
5
+ "exports": {
6
+ "./strapi-admin": {
7
+ "source": "./admin/src/index.ts",
8
+ "import": "./dist/admin/index.mjs",
9
+ "require": "./dist/admin/index.js",
10
+ "default": "./dist/admin/index.js"
11
+ },
12
+ "./strapi-server": {
13
+ "source": "./server/src/index.ts",
14
+ "import": "./dist/server/index.mjs",
15
+ "require": "./dist/server/index.js",
16
+ "default": "./dist/server/index.js"
17
+ },
18
+ "./package.json": "./package.json"
19
+ },
20
+ "files": [
21
+ "dist/"
22
+ ],
23
+ "scripts": {
24
+ "build": "npm-run-all clean --parallel build:code build:types",
25
+ "build:code": "rollup -c",
26
+ "build:types": "run-p build:types:server build:types:admin",
27
+ "build:types:server": "tsc -p server/tsconfig.build.json ",
28
+ "build:types:admin": "tsc -p admin/tsconfig.build.json ",
29
+ "clean": "rimraf ./dist",
30
+ "lint": "eslint .",
31
+ "test:front": "cross-env IS_EE=true jest --config ./jest.config.front.js",
32
+ "test:ts:front": "tsc -p admin/tsconfig.json",
33
+ "test:unit": "jest",
34
+ "test:unit:watch": "jest --watch",
35
+ "watch": "rollup -c -w"
36
+ },
37
+ "keywords": [
38
+ "strapi",
39
+ "plugin",
40
+ "product",
41
+ "actions"
42
+ ],
43
+ "author": "Magda Odrowaz-Zelezik <magda.zelezik@gmail.com>",
44
+ "license": "MIT",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/magdazelena/primer.git",
48
+ "directory": "packages/strapi-plugin-product-actions"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/magdazelena/primer/issues"
52
+ },
53
+ "homepage": "https://github.com/magdazelena/primer/tree/main/packages/strapi-plugin-product-actions#readme",
54
+ "peerDependencies": {
55
+ "@strapi/strapi": "^5.22.0"
56
+ },
57
+ "devDependencies": {
58
+ "@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
59
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3",
60
+ "@eslint/eslintrc": "^3.3.1",
61
+ "@eslint/js": "^9.35.0",
62
+ "@rollup/plugin-commonjs": "^29.0.0",
63
+ "@rollup/plugin-dynamic-import-vars": "^2.1.5",
64
+ "@rollup/plugin-json": "^6.1.0",
65
+ "@rollup/plugin-node-resolve": "^16.0.1",
66
+ "@rollup/plugin-swc": "^0.4.0",
67
+ "@strapi/admin": "^5.23.6",
68
+ "@strapi/content-manager": "^5.23.6",
69
+ "@strapi/types": "^5.23.6",
70
+ "@types/node": "^24.7.0",
71
+ "@types/react": "^18.3.1",
72
+ "@types/react-dom": "^18.3.1",
73
+ "cross-env": "^10.0.0",
74
+ "eslint": "9.39.1",
75
+ "jest": "^30.2.0",
76
+ "npm-run-all": "^4.1.5",
77
+ "rimraf": "^6.0.1",
78
+ "rollup": "^4.52.4",
79
+ "typescript": "^5.3.3"
80
+ },
81
+ "engines": {
82
+ "node": ">=18.0.0",
83
+ "npm": ">=6.0.0"
84
+ },
85
+ "strapi": {
86
+ "kind": "plugin",
87
+ "name": "primershop-product-actions",
88
+ "displayName": "Product Actions",
89
+ "description": "Enables product actions"
90
+ },
91
+ "dependencies": {
92
+ "@strapi/design-system": "^2.0.0-rc.27",
93
+ "@strapi/icons": "^2.0.0-rc.27",
94
+ "@strapi/utils": "^5.22.0",
95
+ "react": "18.3.1",
96
+ "react-dom": "18.3.1",
97
+ "react-router-dom": "6.22.3",
98
+ "styled-components": "^6.1.19"
99
+ }
100
+ }