@wipzent/github-sync 1.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -0
  3. package/dist/cli/index.js +185 -0
  4. package/dist/cli/prompts.js +16 -0
  5. package/dist/config/defaults.js +5 -0
  6. package/dist/config/env.js +23 -0
  7. package/dist/config/octokit.js +14 -0
  8. package/dist/git/clone.js +15 -0
  9. package/dist/git/rewriteAuthor.js +37 -0
  10. package/dist/git/sync.js +141 -0
  11. package/dist/mcp/resources/github.js +13 -0
  12. package/dist/mcp/server.js +92 -0
  13. package/dist/mcp/tools/autoSync.js +130 -0
  14. package/dist/mcp/tools/createRepo.js +120 -0
  15. package/dist/mcp/tools/resolveConflict.js +4 -0
  16. package/dist/mcp/tools/syncRepo.js +21 -0
  17. package/dist/temp/Terred-Mujtaba-/apps/app/src/components/Toaster/toast.js +17 -0
  18. package/dist/temp/Terred-Mujtaba-/apps/app/src/config/fetch.js +76 -0
  19. package/dist/temp/Terred-Mujtaba-/apps/app/src/config/index.js +65 -0
  20. package/dist/temp/Terred-Mujtaba-/apps/app/src/data/data.js +574 -0
  21. package/dist/temp/Terred-Mujtaba-/apps/app/src/lib/utils.js +8 -0
  22. package/dist/temp/Terred-Mujtaba-/apps/app/src/redux/config.js +7 -0
  23. package/dist/temp/Terred-Mujtaba-/apps/app/src/redux/slices/AdminsSlice.js +20 -0
  24. package/dist/temp/Terred-Mujtaba-/apps/app/src/redux/slices/userSlice.js +19 -0
  25. package/dist/temp/Terred-Mujtaba-/apps/app/src/redux/store.js +15 -0
  26. package/dist/temp/Terred-Mujtaba-/apps/app/src/types/interfaces.js +3 -0
  27. package/dist/temp/Terred-Mujtaba-/apps/app/src/types/types.js +2 -0
  28. package/dist/temp/Terred-Mujtaba-/apps/app/src/utils/helperFunctions.js +150 -0
  29. package/dist/temp/Terred-Mujtaba-/apps/app/tailwind.config.js +85 -0
  30. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/admin.controller.js +113 -0
  31. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/admin.controller.spec.js +18 -0
  32. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/admin.module.js +64 -0
  33. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/admin.service.js +327 -0
  34. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/admin.service.spec.js +16 -0
  35. package/dist/temp/Terred-Mujtaba-/apps/backend/src/admin/dto/admin.dto.js +214 -0
  36. package/dist/temp/Terred-Mujtaba-/apps/backend/src/app.controller.js +67 -0
  37. package/dist/temp/Terred-Mujtaba-/apps/backend/src/app.controller.spec.js +20 -0
  38. package/dist/temp/Terred-Mujtaba-/apps/backend/src/app.module.js +67 -0
  39. package/dist/temp/Terred-Mujtaba-/apps/backend/src/app.service.js +60 -0
  40. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/categories.controller.js +89 -0
  41. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/categories.controller.spec.js +18 -0
  42. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/categories.module.js +64 -0
  43. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/categories.service.js +173 -0
  44. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/categories.service.spec.js +16 -0
  45. package/dist/temp/Terred-Mujtaba-/apps/backend/src/categories/dto/category.dto.js +128 -0
  46. package/dist/temp/Terred-Mujtaba-/apps/backend/src/cloudinary/cloudinary.controller.js +86 -0
  47. package/dist/temp/Terred-Mujtaba-/apps/backend/src/cloudinary/cloudinary.controller.spec.js +18 -0
  48. package/dist/temp/Terred-Mujtaba-/apps/backend/src/cloudinary/cloudinary.module.js +63 -0
  49. package/dist/temp/Terred-Mujtaba-/apps/backend/src/cloudinary/cloudinary.service.js +132 -0
  50. package/dist/temp/Terred-Mujtaba-/apps/backend/src/cloudinary/cloudinary.service.spec.js +16 -0
  51. package/dist/temp/Terred-Mujtaba-/apps/backend/src/config/index.js +2 -0
  52. package/dist/temp/Terred-Mujtaba-/apps/backend/src/main.js +30 -0
  53. package/dist/temp/Terred-Mujtaba-/apps/backend/src/prisma/prisma.module.js +60 -0
  54. package/dist/temp/Terred-Mujtaba-/apps/backend/src/prisma/prisma.service.js +58 -0
  55. package/dist/temp/Terred-Mujtaba-/apps/backend/src/prisma/prisma.service.spec.js +16 -0
  56. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/dto/product.dto.js +124 -0
  57. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/products.controller.js +89 -0
  58. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/products.controller.spec.js +18 -0
  59. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/products.module.js +64 -0
  60. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/products.service.js +170 -0
  61. package/dist/temp/Terred-Mujtaba-/apps/backend/src/products/products.service.spec.js +16 -0
  62. package/dist/temp/Terred-Mujtaba-/apps/backend/src/types/index.js +2 -0
  63. package/dist/temp/Terred-Mujtaba-/apps/backend/src/utils/func.js +79 -0
  64. package/dist/temp/Terred-Mujtaba-/apps/backend/src/utils/helper.js +31 -0
  65. package/dist/temp/Terred-Mujtaba-/apps/backend/test/app.e2e-spec.js +54 -0
  66. package/dist/temp/Terred-Mujtaba-/packages/ui/turbo/generators/config.js +30 -0
  67. package/package.json +47 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
9
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
10
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
11
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
12
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
13
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
14
+ var _, done = false;
15
+ for (var i = decorators.length - 1; i >= 0; i--) {
16
+ var context = {};
17
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
18
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
19
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
20
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
21
+ if (kind === "accessor") {
22
+ if (result === void 0) continue;
23
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
24
+ if (_ = accept(result.get)) descriptor.get = _;
25
+ if (_ = accept(result.set)) descriptor.set = _;
26
+ if (_ = accept(result.init)) initializers.unshift(_);
27
+ }
28
+ else if (_ = accept(result)) {
29
+ if (kind === "field") initializers.unshift(_);
30
+ else descriptor[key] = _;
31
+ }
32
+ }
33
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
+ done = true;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ProductsController = void 0;
38
+ const common_1 = require("@nestjs/common");
39
+ let ProductsController = (() => {
40
+ let _classDecorators = [(0, common_1.Controller)('product')];
41
+ let _classDescriptor;
42
+ let _classExtraInitializers = [];
43
+ let _classThis;
44
+ let _instanceExtraInitializers = [];
45
+ let _getProducts_decorators;
46
+ let _addProduct_decorators;
47
+ let _updateProduct_decorators;
48
+ let _removeProduct_decorators;
49
+ var ProductsController = class {
50
+ static { _classThis = this; }
51
+ static {
52
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
53
+ _getProducts_decorators = [(0, common_1.Get)('/get-all')];
54
+ _addProduct_decorators = [(0, common_1.Post)('add-product')];
55
+ _updateProduct_decorators = [(0, common_1.Post)('update-product')];
56
+ _removeProduct_decorators = [(0, common_1.Delete)('delete-product')];
57
+ __esDecorate(this, null, _getProducts_decorators, { kind: "method", name: "getProducts", static: false, private: false, access: { has: obj => "getProducts" in obj, get: obj => obj.getProducts }, metadata: _metadata }, null, _instanceExtraInitializers);
58
+ __esDecorate(this, null, _addProduct_decorators, { kind: "method", name: "addProduct", static: false, private: false, access: { has: obj => "addProduct" in obj, get: obj => obj.addProduct }, metadata: _metadata }, null, _instanceExtraInitializers);
59
+ __esDecorate(this, null, _updateProduct_decorators, { kind: "method", name: "updateProduct", static: false, private: false, access: { has: obj => "updateProduct" in obj, get: obj => obj.updateProduct }, metadata: _metadata }, null, _instanceExtraInitializers);
60
+ __esDecorate(this, null, _removeProduct_decorators, { kind: "method", name: "removeProduct", static: false, private: false, access: { has: obj => "removeProduct" in obj, get: obj => obj.removeProduct }, metadata: _metadata }, null, _instanceExtraInitializers);
61
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
62
+ ProductsController = _classThis = _classDescriptor.value;
63
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
64
+ __runInitializers(_classThis, _classExtraInitializers);
65
+ }
66
+ productsService = __runInitializers(this, _instanceExtraInitializers);
67
+ constructor(productsService) {
68
+ this.productsService = productsService;
69
+ }
70
+ getProducts() {
71
+ return this.productsService.getProducts();
72
+ }
73
+ addProduct(addProductData) {
74
+ return this.productsService.addProduct(addProductData);
75
+ }
76
+ updateProduct(addProductData) {
77
+ return this.productsService.updateProduct(addProductData);
78
+ }
79
+ async removeProduct(productId) {
80
+ const id = parseInt(productId, 10);
81
+ if (isNaN(id)) {
82
+ return { message: 'Invalid product ID', status: common_1.HttpStatus.BAD_REQUEST };
83
+ }
84
+ return this.productsService.removeProduct(id);
85
+ }
86
+ };
87
+ return ProductsController = _classThis;
88
+ })();
89
+ exports.ProductsController = ProductsController;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const products_controller_1 = require("./products.controller");
5
+ const products_service_1 = require("./products.service");
6
+ describe('ProductsController', () => {
7
+ let controller;
8
+ beforeEach(async () => {
9
+ const module = await testing_1.Test.createTestingModule({
10
+ controllers: [products_controller_1.ProductsController],
11
+ providers: [products_service_1.ProductsService],
12
+ }).compile();
13
+ controller = module.get(products_controller_1.ProductsController);
14
+ });
15
+ it('should be defined', () => {
16
+ expect(controller).toBeDefined();
17
+ });
18
+ });
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ProductsModule = void 0;
38
+ const common_1 = require("@nestjs/common");
39
+ const products_service_1 = require("./products.service");
40
+ const products_controller_1 = require("./products.controller");
41
+ const prisma_module_1 = require("../prisma/prisma.module");
42
+ const config_1 = require("@nestjs/config");
43
+ let ProductsModule = (() => {
44
+ let _classDecorators = [(0, common_1.Module)({
45
+ controllers: [products_controller_1.ProductsController],
46
+ providers: [products_service_1.ProductsService],
47
+ imports: [prisma_module_1.PrismaModule, config_1.ConfigModule],
48
+ })];
49
+ let _classDescriptor;
50
+ let _classExtraInitializers = [];
51
+ let _classThis;
52
+ var ProductsModule = class {
53
+ static { _classThis = this; }
54
+ static {
55
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
56
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
57
+ ProductsModule = _classThis = _classDescriptor.value;
58
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
59
+ __runInitializers(_classThis, _classExtraInitializers);
60
+ }
61
+ };
62
+ return ProductsModule = _classThis;
63
+ })();
64
+ exports.ProductsModule = ProductsModule;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ProductsService = void 0;
38
+ const common_1 = require("@nestjs/common");
39
+ const helper_1 = require("../utils/helper");
40
+ let ProductsService = (() => {
41
+ let _classDecorators = [(0, common_1.Injectable)()];
42
+ let _classDescriptor;
43
+ let _classExtraInitializers = [];
44
+ let _classThis;
45
+ var ProductsService = class {
46
+ static { _classThis = this; }
47
+ static {
48
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
49
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
50
+ ProductsService = _classThis = _classDescriptor.value;
51
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
52
+ __runInitializers(_classThis, _classExtraInitializers);
53
+ }
54
+ prisma;
55
+ constructor(prisma) {
56
+ this.prisma = prisma;
57
+ }
58
+ async getProducts() {
59
+ try {
60
+ // Log the result of findMany to the console (optional)
61
+ const products = await this.prisma.products.findMany({
62
+ include: {
63
+ categories: true, // Include categories related to each product
64
+ },
65
+ });
66
+ console.log(products);
67
+ return products;
68
+ }
69
+ catch (error) {
70
+ throw new common_1.HttpException(error.message, common_1.HttpStatus.NOT_FOUND);
71
+ }
72
+ }
73
+ async addProduct(productData) {
74
+ console.log('Add product triggered');
75
+ console.log(productData);
76
+ try {
77
+ const existingProduct = await this.prisma.products.findFirst({
78
+ where: { name: productData.name },
79
+ });
80
+ if (existingProduct) {
81
+ return {
82
+ message: 'Product with this name already exists!',
83
+ status: common_1.HttpStatus.FORBIDDEN,
84
+ };
85
+ }
86
+ await this.prisma.products.create({
87
+ data: {
88
+ ...productData,
89
+ productImages: productData.productImages ?? [],
90
+ categories: {
91
+ connect: productData.categories.map((id) => ({ id })),
92
+ },
93
+ },
94
+ });
95
+ return {
96
+ message: 'Product created successfully 🎉',
97
+ status: common_1.HttpStatus.OK,
98
+ };
99
+ }
100
+ catch (error) {
101
+ throw new common_1.HttpException(error.message, common_1.HttpStatus.BAD_REQUEST);
102
+ }
103
+ }
104
+ async updateProduct(productData) {
105
+ console.log('Update product triggered');
106
+ console.log(productData);
107
+ try {
108
+ const existingProduct = await this.prisma.products.findFirst({
109
+ where: { id: productData.id },
110
+ });
111
+ if (!existingProduct) {
112
+ return {
113
+ message: 'Product not found☹',
114
+ status: common_1.HttpStatus.FORBIDDEN,
115
+ };
116
+ }
117
+ await this.prisma.products.update({
118
+ where: { id: productData.id },
119
+ data: {
120
+ name: productData.name ?? existingProduct.name,
121
+ price: productData.price ?? existingProduct.price,
122
+ description: productData.description ?? existingProduct.description,
123
+ posterImageUrl: productData.posterImageUrl ?? existingProduct.posterImageUrl,
124
+ posterImagePublicId: productData.posterImagePublicId ??
125
+ existingProduct.posterImagePublicId,
126
+ videoUrl: productData.videoUrl ?? existingProduct.videoUrl,
127
+ videoPublicId: productData.videoPublicId ?? existingProduct.videoPublicId,
128
+ productImages: productData.productImages ?? existingProduct.productImages ?? [],
129
+ categories: {
130
+ set: productData.categories?.map((id) => ({ id })) ?? [],
131
+ },
132
+ },
133
+ });
134
+ return {
135
+ message: 'Product updated successfully 🎉',
136
+ status: common_1.HttpStatus.OK,
137
+ };
138
+ }
139
+ catch (error) {
140
+ throw new common_1.HttpException(error.message, common_1.HttpStatus.BAD_REQUEST);
141
+ }
142
+ }
143
+ async removeProduct(id) {
144
+ try {
145
+ const productExist = await this.prisma.products.findUnique({
146
+ where: { id },
147
+ });
148
+ if (!productExist) {
149
+ return {
150
+ message: 'Product does not exist ☹',
151
+ status: common_1.HttpStatus.NOT_FOUND,
152
+ };
153
+ }
154
+ await this.prisma.products.delete({
155
+ where: { id },
156
+ });
157
+ return {
158
+ message: 'Product removed successfully 😊',
159
+ status: common_1.HttpStatus.OK,
160
+ };
161
+ }
162
+ catch (error) {
163
+ console.error('Error removing product:', error);
164
+ (0, helper_1.customHttpException)(error.message, 'BAD_REQUEST');
165
+ }
166
+ }
167
+ };
168
+ return ProductsService = _classThis;
169
+ })();
170
+ exports.ProductsService = ProductsService;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@nestjs/testing");
4
+ const products_service_1 = require("./products.service");
5
+ describe('ProductsService', () => {
6
+ let service;
7
+ beforeEach(async () => {
8
+ const module = await testing_1.Test.createTestingModule({
9
+ providers: [products_service_1.ProductsService],
10
+ }).compile();
11
+ service = module.get(products_service_1.ProductsService);
12
+ });
13
+ it('should be defined', () => {
14
+ expect(service).toBeDefined();
15
+ });
16
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.verifyPassword = verifyPassword;
37
+ exports.hashPassword = hashPassword;
38
+ exports.encryptPassword = encryptPassword;
39
+ exports.decryptPassword = decryptPassword;
40
+ const bcrypt = __importStar(require("bcrypt"));
41
+ const crypto = __importStar(require("crypto"));
42
+ async function verifyPassword(password, hashedPassword, configService) {
43
+ const secret = configService.get(process.env.PASSWORD_SECRET);
44
+ const passwordWithSecret = password + secret;
45
+ return await bcrypt.compare(passwordWithSecret, hashedPassword);
46
+ }
47
+ async function hashPassword(password, configService) {
48
+ const secret = configService.get(process.env.PASSWORD_SECRET);
49
+ const passwordWithSecret = password + secret;
50
+ const hashedPassword = await bcrypt.hash(passwordWithSecret, 10);
51
+ return hashedPassword;
52
+ }
53
+ function encryptPassword(password, configService) {
54
+ const secret = configService.get(process.env.PASSWORD_SECRET);
55
+ // Generate initialization vector
56
+ const iv = crypto.randomBytes(16);
57
+ const key = crypto.createHash('sha256').update(secret).digest();
58
+ // Create cipher instance
59
+ const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
60
+ // Encrypt the password
61
+ let encrypted = cipher.update(password, 'utf-8', 'hex');
62
+ encrypted += cipher.final('hex');
63
+ console.log('debuge');
64
+ // Combine the IV and the encrypted password to return as a single string
65
+ return iv.toString('hex') + ':' + encrypted;
66
+ }
67
+ function decryptPassword(encryptedPassword, configService) {
68
+ const secret = configService.get(process.env.PASSWORD_SECRET);
69
+ // Split the IV and the encrypted password
70
+ const [ivHex, encrypted] = encryptedPassword.split(':');
71
+ const iv = Buffer.from(ivHex, 'hex');
72
+ const key = crypto.createHash('sha256').update(secret).digest();
73
+ // Create decipher instance
74
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
75
+ // Decrypt the password
76
+ let decrypted = decipher.update(encrypted, 'hex', 'utf-8');
77
+ decrypted += decipher.final('utf-8');
78
+ return decrypted;
79
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sendResetEmail = exports.customHttpException = void 0;
7
+ const common_1 = require("@nestjs/common");
8
+ const nodemailer_1 = __importDefault(require("nodemailer"));
9
+ const customHttpException = (error, status) => {
10
+ throw new common_1.HttpException(error, common_1.HttpStatus[status]);
11
+ };
12
+ exports.customHttpException = customHttpException;
13
+ const sendResetEmail = async (email, token) => {
14
+ const transporter = nodemailer_1.default.createTransport({
15
+ service: 'Gmail',
16
+ auth: {
17
+ user: process.env.EMAIL_USER,
18
+ pass: process.env.EMAIL_PASS,
19
+ },
20
+ });
21
+ const resetLink = `${process.env.FRONTEND_URL}/reset-password?token=${token}`;
22
+ await transporter.sendMail({
23
+ from: '"Your App" <no-reply@yourapp.com>',
24
+ to: email,
25
+ subject: 'Password Reset',
26
+ text: `Please use the following link to reset your password: ${resetLink}`,
27
+ html: `<p>Please use the following link to reset your password:</p><a href="${resetLink}">${resetLink}</a>`,
28
+ });
29
+ return resetLink;
30
+ };
31
+ exports.sendResetEmail = sendResetEmail;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const testing_1 = require("@nestjs/testing");
37
+ const request = __importStar(require("supertest"));
38
+ const app_module_1 = require("./../src/app.module");
39
+ describe('AppController (e2e)', () => {
40
+ let app;
41
+ beforeEach(async () => {
42
+ const moduleFixture = await testing_1.Test.createTestingModule({
43
+ imports: [app_module_1.AppModule],
44
+ }).compile();
45
+ app = moduleFixture.createNestApplication();
46
+ await app.init();
47
+ });
48
+ it('/ (GET)', () => {
49
+ return request(app.getHttpServer())
50
+ .get('/')
51
+ .expect(200)
52
+ .expect('Hello World!');
53
+ });
54
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = generator;
4
+ // Learn more about Turborepo Generators at https://turbo.build/repo/docs/core-concepts/monorepos/code-generation
5
+ function generator(plop) {
6
+ // A simple generator to add a new React component to the internal UI library
7
+ plop.setGenerator("react-component", {
8
+ description: "Adds a new react component",
9
+ prompts: [
10
+ {
11
+ type: "input",
12
+ name: "name",
13
+ message: "What is the name of the component?",
14
+ },
15
+ ],
16
+ actions: [
17
+ {
18
+ type: "add",
19
+ path: "src/{{kebabCase name}}.tsx",
20
+ templateFile: "templates/component.hbs",
21
+ },
22
+ {
23
+ type: "append",
24
+ path: "package.json",
25
+ pattern: /"exports": {(?<insertion>)/g,
26
+ template: ' "./{{kebabCase name}}": "./src/{{kebabCase name}}.tsx",',
27
+ },
28
+ ],
29
+ });
30
+ }
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@wipzent/github-sync",
3
+ "version": "1.0.1",
4
+ "description": "Professional Git history normalization and repository synchronization tool",
5
+ "type": "module",
6
+ "main": "dist/mcp/server.js",
7
+ "bin": {
8
+ "wipzent-sync": "dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "keywords": [
16
+ "git",
17
+ "sync",
18
+ "github",
19
+ "mcp",
20
+ "history-rewrite",
21
+ "white-label"
22
+ ],
23
+ "author": "Wipzent",
24
+ "license": "MIT",
25
+ "scripts": {
26
+ "build": "tsc",
27
+ "start": "node dist/mcp/server.js",
28
+ "cli": "node dist/cli/index.js",
29
+ "prepublishOnly": "npm run build"
30
+ },
31
+ "dependencies": {
32
+ "@modelcontextprotocol/sdk": "^0.6.0",
33
+ "boxen": "^7.1.1",
34
+ "chalk": "^5.6.2",
35
+ "commander": "^12.1.0",
36
+ "dotenv": "^16.4.5",
37
+ "inquirer": "^9.3.2",
38
+ "octokit": "^4.0.2",
39
+ "ora": "^5.4.1",
40
+ "simple-git": "^3.25.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/inquirer": "^9.0.7",
44
+ "@types/node": "^20.14.10",
45
+ "typescript": "^5.5.3"
46
+ }
47
+ }