Skip to content

Commit 4dea7c8

Browse files
author
Xziy
committed
fixes typescript syntax
1 parent 2c32f40 commit 4dea7c8

39 files changed

+598
-144
lines changed

adapters/delivery/DeliveryAdapter.d.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { OrderRecord } from "../../models/Order";
12
/**
23
* **Soft delivery calculation**
34
* This is done so that some deliveries can agree on the cost of delivery themselves.
@@ -25,10 +26,10 @@ export default abstract class DeliveryAdapter {
2526
* Calc delivery
2627
* @returns Delivery
2728
*/
28-
abstract calculate(order: OrderRecordRecord): Promise<Delivery>;
29+
abstract calculate(order: OrderRecord): Promise<Delivery>;
2930
/**
3031
* Reset order
3132
* @returns void
3233
*/
33-
reset(order: OrderRecordRecord): Promise<void>;
34+
reset(order: OrderRecord): Promise<void>;
3435
}

adapters/delivery/DeliveryAdapter.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ export default abstract class DeliveryAdapter {
3232
* Calc delivery
3333
* @returns Delivery
3434
*/
35-
public abstract calculate(order: OrderRecordRecord): Promise<Delivery>;
35+
public abstract calculate(order: OrderRecord): Promise<Delivery>;
3636

3737
/**
3838
* Reset order
3939
* @returns void
4040
*/
41-
public async reset(order: OrderRecordRecord): Promise<void> {
41+
public async reset(order: OrderRecord): Promise<void> {
4242
order.delivery = {
4343
deliveryTimeMinutes: 0,
4444
allowed: false,
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1+
import { OrderRecord } from "../../../models/Order";
12
import DeliveryAdapter, { Delivery } from "../DeliveryAdapter";
23
export declare class DefaultDeliveryAdapter extends DeliveryAdapter {
3-
calculate(order: OrderRecordRecord): Promise<Delivery>;
4+
calculate(order: OrderRecord): Promise<Delivery>;
45
}

adapters/delivery/default/defaultDelivery.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { OrderRecord } from "../../../models/Order";
33
import DeliveryAdapter, { Delivery } from "../DeliveryAdapter";
44

55
export class DefaultDeliveryAdapter extends DeliveryAdapter {
6-
public async calculate(order: OrderRecordRecord): Promise<Delivery> {
6+
public async calculate(order: OrderRecord): Promise<Delivery> {
77
const deliveryCost = await Settings.get("DELIVERY_COST");
88
const deliveryItem = await Settings.get("DELIVERY_ITEM");
99
const deliveryMessage = await Settings.get("DELIVERY_MESSAGE");

adapters/promotion/AbstractPromotion.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default abstract class AbstractPromotionHandler {
2222
* The order must be modified and recorded in a model within this method
2323
* @param order Order should populated order
2424
*/
25-
abstract action(order: OrderRecordRecord): Promise<PromotionState>;
25+
abstract action(order: OrderRecord): Promise<PromotionState>;
2626
/**
2727
* If isPublic === true displayGroup is required
2828
*/

adapters/promotion/AbstractPromotion.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export default abstract class AbstractPromotionHandler {
4747
* The order must be modified and recorded in a model within this method
4848
* @param order Order should populated order
4949
*/
50-
public abstract action(order: OrderRecordRecord): Promise<PromotionState>;
50+
public abstract action(order: OrderRecord): Promise<PromotionState>;
5151

5252
/**
5353
* If isPublic === true displayGroup is required

adapters/promotion/AbstractPromotionAdapter.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default abstract class AbstractPromotionAdapter {
1010
* The order must be recorded in a model and modified during execution
1111
* @param order Order should populated order
1212
*/
13-
abstract processOrder(order: OrderRecordRecord): Promise<OrderRecord>;
13+
abstract processOrder(order: OrderRecord): Promise<OrderRecord>;
1414
abstract displayDish(dish: DishRecord): DishRecord;
1515
abstract displayGroup(group: GroupRecord): GroupRecord;
1616
abstract getActivePromotionsIds(): string[];
@@ -20,7 +20,7 @@ export default abstract class AbstractPromotionAdapter {
2020
*
2121
* This is in an abstract class because it's essentially part of the core, but you can rewrite it
2222
*/
23-
clearOfPromotion(order: OrderRecordRecord): Promise<OrderRecord>;
23+
clearOfPromotion(order: OrderRecord): Promise<OrderRecord>;
2424
abstract deletePromotion(id: string): void;
2525
abstract addPromotionHandler(promotionToAdd: AbstractPromotionHandler): Promise<void>;
2626
abstract getPromotionHandlerById(id: string): AbstractPromotionHandler | undefined;

adapters/promotion/AbstractPromotionAdapter.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default abstract class AbstractPromotionAdapter {
1414
* The order must be recorded in a model and modified during execution
1515
* @param order Order should populated order
1616
*/
17-
public abstract processOrder(order: OrderRecordRecord): Promise<OrderRecord>
17+
public abstract processOrder(order: OrderRecord): Promise<OrderRecord>
1818

1919
public abstract displayDish(dish: DishRecord): DishRecord;
2020
public abstract displayGroup(group: GroupRecord): GroupRecord;
@@ -26,7 +26,7 @@ export default abstract class AbstractPromotionAdapter {
2626
*
2727
* This is in an abstract class because it's essentially part of the core, but you can rewrite it
2828
*/
29-
public async clearOfPromotion(order: OrderRecordRecord): Promise<OrderRecord> {
29+
public async clearOfPromotion(order: OrderRecord): Promise<OrderRecord> {
3030
// if Order.status ="PAYMENT" or "ORDER" can't clear promotions
3131
if (order.state === "ORDER") throw `order with orderId ${order.id} in state ORDER`;
3232
//if (order.state === "PAYMENT") throw "order with orderId" + order.id + "in state PAYMENT";

adapters/promotion/default/configuredPromotion.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler {
1616
concept: string[];
1717
externalId: string;
1818
condition(arg: GroupRecord | DishRecord | OrderRecord): boolean;
19-
action(order: OrderRecordRecord): Promise<PromotionState>;
19+
action(order: OrderRecord): Promise<PromotionState>;
2020
displayGroup(group: GroupRecord, user?: string | UserRecord): GroupRecord;
2121
displayDish(dish: DishRecord, user?: string | UserRecord): DishRecord;
22-
applyPromotion(order: OrderRecordRecord): Promise<PromotionState>;
22+
applyPromotion(order: OrderRecord): Promise<PromotionState>;
2323
}

adapters/promotion/default/configuredPromotion.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler {
5454
public condition(arg: GroupRecord | DishRecord | OrderRecord): boolean {
5555
if (findModelInstanceByAttributes(arg) === "Order" && (this.concept[0] === undefined || this.concept[0] === "")
5656
? true : someInArray(arg.concept, this.concept)) {
57-
let order: OrderRecordRecord = arg as OrderRecord
57+
let order: OrderRecord = arg as OrderRecord
5858
// TODO: if order.dishes type number[]
5959
let orderDishes: OrderDishRecord[] = order.dishes as OrderDishRecord[]
6060

@@ -79,7 +79,7 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler {
7979
return false
8080
}
8181

82-
public async action(order: OrderRecordRecord): Promise<PromotionState> {
82+
public async action(order: OrderRecord): Promise<PromotionState> {
8383
let mass: PromotionState = await this.applyPromotion(order)
8484
return mass
8585
}
@@ -116,7 +116,7 @@ export default class ConfiguredPromotion extends AbstractPromotionHandler {
116116
}
117117

118118
// TODO: rewrite for argument (modificable Order);
119-
public async applyPromotion(order: OrderRecordRecord): Promise<PromotionState> {
119+
public async applyPromotion(order: OrderRecord): Promise<PromotionState> {
120120
sails.log.debug(`Configured promotion to be applied. name: [${this.name}], id: [${this.id}]`)
121121

122122
// order.dishes

libs/BackupHandler.d.ts

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import * as tar from 'tar';
2+
interface BackupOptions {
3+
isDeleted: boolean;
4+
concepts: string[];
5+
turncate: boolean;
6+
}
7+
export declare class BackupHandler {
8+
private groups;
9+
private dishes;
10+
tar: typeof tar;
11+
exportToTar(filePath: string, options?: Partial<BackupOptions>): Promise<void>;
12+
importFromTar(filePath: string): Promise<void>;
13+
private createJSON;
14+
private checkAndLoadImage;
15+
private loadImage;
16+
private exportImages;
17+
}
18+
export {};

libs/BackupHandler.js

+163
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
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 (mod) {
19+
if (mod && mod.__esModule) return mod;
20+
var result = {};
21+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22+
__setModuleDefault(result, mod);
23+
return result;
24+
};
25+
Object.defineProperty(exports, "__esModule", { value: true });
26+
exports.BackupHandler = void 0;
27+
const path = __importStar(require("path"));
28+
const tar = __importStar(require("tar"));
29+
const fs_1 = require("./wrapper/fs");
30+
const defaultOptions = {
31+
isDeleted: false,
32+
concepts: [],
33+
turncate: false
34+
};
35+
class BackupHandler {
36+
constructor() {
37+
this.groups = [];
38+
this.dishes = [];
39+
this.tar = tar;
40+
}
41+
// Export data and images to a tar file
42+
async exportToTar(filePath, options = {}) {
43+
try {
44+
const finalOptions = { ...defaultOptions, ...options };
45+
// Получаем текущую директорию для создания временной папки
46+
const currentDir = process.cwd();
47+
// Создаем временную директорию для экспорта
48+
const timestamp = Date.now();
49+
const exportDir = path.join(currentDir, `.tmp/backup-${timestamp}`);
50+
// Создаем папку, если она не существует
51+
await fs_1.fsw.mkdir(exportDir);
52+
// Путь для JSON файла
53+
const jsonFilePath = path.join(exportDir, 'data.json');
54+
// Создание JSON данных
55+
const jsonData = await this.createJSON(finalOptions);
56+
await fs_1.fsw.writeFile(jsonFilePath, jsonData);
57+
// Экспорт изображений в временную директорию
58+
await this.exportImages(this.dishes, exportDir);
59+
// Упаковка всего содержимого в tar файл
60+
await this.tar.c({
61+
gzip: true,
62+
file: filePath,
63+
cwd: exportDir
64+
}, ['.']);
65+
// Удаление временных файлов
66+
await fs_1.fsw.unlink(jsonFilePath);
67+
console.log('Export completed:', filePath);
68+
}
69+
catch (error) {
70+
new Error;
71+
console.error('Export error:', error);
72+
}
73+
}
74+
// Import data and images from a tar file
75+
async importFromTar(filePath) {
76+
try {
77+
// Получаем текущую директорию
78+
const currentDir = process.cwd();
79+
// Создаем директорию для распаковки
80+
const timestamp = Date.now();
81+
const extractDir = path.join(currentDir, `.tmp/backup-${timestamp}`);
82+
// Создаем папку, если она не существует
83+
await fs_1.fsw.mkdir(extractDir);
84+
console.log(`Extracting tar file to: ${extractDir}`);
85+
// Распаковываем архив в указанную директорию
86+
await this.tar.x({
87+
file: filePath,
88+
cwd: extractDir,
89+
});
90+
// Читаем данные JSON
91+
const jsonFilePath = path.join(extractDir, 'data.json');
92+
const jsonData = await fs_1.fsw.readFile(jsonFilePath);
93+
const importedData = JSON.parse(jsonData);
94+
this.groups = importedData.groups;
95+
this.dishes = importedData.dishes;
96+
// Проверяем и загружаем изображения
97+
for (const dish of this.dishes) {
98+
if (dish.images && Array.isArray(dish.images)) {
99+
for (const image of dish.images) {
100+
const imagePath = path.join(extractDir, `${image.id}.jpg`);
101+
this.checkAndLoadImage(imagePath); // Предположим, что это ваш метод для проверки и загрузки изображений
102+
}
103+
}
104+
}
105+
console.log('Import completed:', filePath);
106+
}
107+
catch (error) {
108+
console.error('Import error:', error);
109+
}
110+
}
111+
// Create JSON data
112+
async createJSON(options) {
113+
const groups = await Group.find({
114+
isDeleted: options.isDeleted,
115+
...(options.concepts.length && { concepts: { $in: options.concepts } })
116+
});
117+
const dishes = await Dish.find({
118+
isDeleted: options.isDeleted,
119+
...(options.concepts.length && { concepts: { $in: options.concepts } })
120+
});
121+
this.groups = groups;
122+
this.dishes = dishes;
123+
const kernelVersion = process.version;
124+
return JSON.stringify({ kernelVersion, groups, dishes }, null, 2);
125+
}
126+
// Check file existence and load image
127+
async checkAndLoadImage(imagePath) {
128+
if (await fs_1.fsw.exists(imagePath)) {
129+
this.loadImage(imagePath);
130+
}
131+
else {
132+
console.warn(`Image not found: ${imagePath}`);
133+
}
134+
}
135+
// Simulate loading an image
136+
loadImage(imagePath) {
137+
console.log(`Loading image: ${imagePath}`);
138+
}
139+
// Export images to a directory
140+
async exportImages(dishes, exportDir) {
141+
const imagesDir = path.join(exportDir);
142+
dishes.forEach(dish => {
143+
if (dish.images && Array.isArray(dish.images)) {
144+
dish.images.forEach((image) => {
145+
Object.entries(image.variant).forEach(async ([variantName, variantPath]) => {
146+
if (variantPath) {
147+
const imageFileName = `${variantName}_${image.id}.jpg`;
148+
const destinationPath = path.join(imagesDir, imageFileName);
149+
if (await fs_1.fsw.exists(variantPath)) {
150+
await fs_1.fsw.copyFile(variantPath, destinationPath);
151+
console.log(`Image exported: ${imageFileName}`);
152+
}
153+
else {
154+
console.warn(`Image file not found: ${variantPath}`);
155+
}
156+
}
157+
});
158+
});
159+
}
160+
});
161+
}
162+
}
163+
exports.BackupHandler = BackupHandler;

libs/adminpanel/ProductMediaManager/Items.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {File, MediaManagerItem, MediaFileType, UploaderFile, imageSizes} from 'sails-adminpanel/lib/media-manager/AbstractMediaManager'
1+
import {File, MediaManagerItem, MediaFileType, UploaderFile} from 'sails-adminpanel/lib/media-manager/AbstractMediaManager'
22
import {randomFileName} from "sails-adminpanel/lib/media-manager/helpers/MediaManagerHelper";
33
import sizeOf from "image-size";
44
import sharp from "sharp"

libs/adminpanel/models/lib/group.d.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import { CreateUpdateConfig, FieldsModels } from "sails-adminpanel/interfaces/adminpanelConfig";
1+
import { CreateUpdateConfig, FieldsModels, ModelFieldConfig } from "sails-adminpanel/interfaces/adminpanelConfig";
2+
type AdminizerModelConfig = Record<string, ModelFieldConfig>;
23
export declare class GroupConfig {
3-
static fields: FieldsModels;
4+
static fields: AdminizerModelConfig;
45
static add(): CreateUpdateConfig;
56
static edit(): CreateUpdateConfig;
67
static list(): {
78
fields: FieldsModels;
89
};
910
}
11+
export {};

libs/adminpanel/models/lib/group.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { CreateUpdateConfig, FieldsModels, MediaManagerOptionsField } from "sails-adminpanel/interfaces/adminpanelConfig";
2-
1+
import { CreateUpdateConfig, FieldsModels, MediaManagerOptionsField, ModelFieldConfig } from "sails-adminpanel/interfaces/adminpanelConfig";
2+
type AdminizerModelConfig = Record<string, ModelFieldConfig>
33
export class GroupConfig {
4-
static fields: FieldsModels = {
4+
static fields: AdminizerModelConfig = {
55
id: {
66
title: "Id",
77
disabled: true

libs/hookTools.js

+1
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ class HookTools {
179179
const normalizedPath = path.normalize(folder);
180180
const policies = {};
181181
(0, fs_1.readdirSync)(normalizedPath).forEach(function (file) {
182+
//@ts-ignore
182183
policies[file.split(".").slice(0, -1).join(".")] = require(normalizedPath + "/" + file);
183184
});
184185
this.policies = policies;

libs/hookTools.ts

+1
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ export default class HookTools {
186186

187187
const policies = {};
188188
readdirSync(normalizedPath).forEach(function (file) {
189+
//@ts-ignore
189190
policies[file.split(".").slice(0, -1).join(".")] = require(normalizedPath + "/" + file);
190191
});
191192

libs/wrapper/fs.d.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export declare const fsw: {
2+
writeFile(filePath: string, data: string): Promise<void>;
3+
readFile(filePath: string): Promise<string>;
4+
unlink(filePath: string): Promise<void>;
5+
exists(filePath: string): Promise<boolean>;
6+
mkdir(dirPath: string): Promise<void>;
7+
copyFile(src: string, dest: string): Promise<void>;
8+
};

0 commit comments

Comments
 (0)