@luca324/yandex-evershop-s3 1.0.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 (2) hide show
  1. package/README.md +155 -26
  2. package/package.json +2 -14
package/README.md CHANGED
@@ -2,59 +2,188 @@
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/%40luca324%2Fyandex-evershop-s3.svg)](https://badge.fury.io/js/%40luca324%2Fyandex-evershop-s3)
4
4
 
5
- Пропатченная версия `@evershop/s3_file_storage` с поддержкой Yandex Cloud S3.
5
+ Патч для пакета `@evershop/s3_file_storage` с поддержкой Yandex Cloud S3.
6
+
7
+ ## Описание
8
+
9
+ Этот пакет предоставляет патч-файл, который модифицирует `@evershop/s3_file_storage` для работы с Yandex Cloud Object Storage (S3-совместимое хранилище). Патч добавляет поддержку кастомного endpoint и исправляет генерацию URL для корректной работы с Yandex Cloud.
10
+
11
+ ## Требования
12
+
13
+ - Node.js проект с установленным `@evershop/s3_file_storage`
14
+ - `patch-package` должен быть установлен в вашем проекте как зависимость разработки
15
+ - Скрипт `postinstall` должен быть настроен в `package.json` для автоматического применения патчей
6
16
 
7
17
  ## Установка
8
18
 
19
+ ### Шаг 1: Установите пакет
20
+
21
+ Установите пакет через npm или yarn:
22
+
9
23
  ```bash
10
24
  npm install @luca324/yandex-evershop-s3
11
25
  ```
12
26
 
13
- Или для Yarn:
27
+ или
28
+
14
29
  ```bash
15
30
  yarn add @luca324/yandex-evershop-s3
16
31
  ```
17
32
 
18
- ## Что исправляет
33
+ ### Шаг 2: Скопируйте патч в корень проекта
19
34
 
20
- Этот пакет автоматически применяет патч к `@evershop/s3_file_storage`:
35
+ После установки пакета, патч-файл будет находиться в `node_modules/@luca324/yandex-evershop-s3/patches/`. Вам нужно скопировать его в папку `patches/` в корне вашего проекта.
21
36
 
22
- 1. **Поддержка Yandex Cloud S3 endpoint**
23
- 2. [Другие исправления, которые вы сделали]
37
+ **Для Linux/Mac:**
38
+ ```bash
39
+ mkdir -p patches
40
+ cp node_modules/@luca324/yandex-evershop-s3/patches/@evershop+s3_file_storage+2.0.0.patch patches/
41
+ ```
24
42
 
25
- ## Использование
43
+ ### Шаг 3: Убедитесь, что patch-package настроен
26
44
 
27
- Используйте точно так же, как оригинальный пакет:
28
- добавьте в файл .env следующие переменные:
45
+ Убедитесь, что в вашем `package.json` есть:
29
46
 
30
- ```env
31
- AWS_ACCESS_KEY_ID=your_access_key_id # ID ключа доступа (в интерфейсе Yandex S3)
32
- AWS_SECRET_ACCESS_KEY=your_secret_access_key # Секретный ключ доступа
33
- AWS_BUCKET_NAME=your_bucket_name # Имя бакета
34
- AWS_REGION=ru-central1 # Регион (для Yandex S3 работает `ru-central1`)
35
- AWS_ENDPOINT=https://storage.yandexcloud.net # Endpoint для Yandex S3 (`https://storage.yandexcloud.net`)
36
- AWS_S3_FORCE_PATH_STYLE=true
47
+ 1. `patch-package` в `devDependencies`:
48
+ ```json
49
+ {
50
+ "devDependencies": {
51
+ "patch-package": "^8.0.1"
52
+ }
53
+ }
37
54
  ```
38
55
 
39
- ## Как это работает
40
-
41
- При установке `postinstall` скрипт автоматически применяет патч к установленной копии `@evershop/s3_file_storage`.
56
+ 2. Скрипт `postinstall` в секции `scripts`:
57
+ ```json
58
+ {
59
+ "scripts": {
60
+ "postinstall": "patch-package"
61
+ }
62
+ }
63
+ ```
42
64
 
43
- ## Локальная разработка
65
+ Если их нет, установите и добавьте:
44
66
 
45
67
  ```bash
46
- # Клонируйте репозиторий
47
- git clone https://github.com/Luca324/yandex-evershop-s3.git
48
- cd yandex-evershop-s3
68
+ npm install --save-dev patch-package
69
+ ```
49
70
 
50
- # Установите зависимости
71
+ И добавьте скрипт в `package.json`:
72
+ ```json
73
+ {
74
+ "scripts": {
75
+ "postinstall": "patch-package"
76
+ }
77
+ }
78
+ ```
79
+
80
+ ### Шаг 4: Примените патч
81
+
82
+ Патч будет применен автоматически при следующей установке зависимостей:
83
+
84
+ ```bash
51
85
  npm install
86
+ ```
87
+
88
+ Или примените патч вручную:
52
89
 
53
- # Создайте патч (если нужно обновить)
54
- npx patch-package @evershop/s3_file_storage
90
+ ```bash
91
+ npx patch-package
55
92
  ```
56
93
 
94
+ ## Что изменяет патч
95
+
96
+ Патч модифицирует следующие файлы в `@evershop/s3_file_storage`:
97
+
98
+ ### 1. **Конфигурация S3Client**
99
+ - Добавляет поддержку кастомного `endpoint` (для Yandex Cloud S3)
100
+ - Включает `forcePathStyle: true` для корректной работы с Yandex Cloud
101
+
102
+ ### 2. **Генерация URL файлов**
103
+ - Изменяет формат URL с AWS-стиля (`https://bucket.s3.amazonaws.com/path`) на path-style (`https://storage.yandexcloud.net/bucket/path`)
104
+ - Использует переменную окружения `AWS_ENDPOINT` для формирования URL
105
+
106
+ ### 3. **Парсинг URL**
107
+ - Исправляет извлечение имени бакета и ключа объекта из URL для Yandex Cloud формата
108
+ - Корректно обрабатывает path-style URLs
109
+
110
+ ### Измененные файлы:
111
+ - `dist/services/awsFileBrowser.js` - просмотр файлов
112
+ - `dist/services/awsFileDeleter.js` - удаление файлов
113
+ - `dist/services/awsFileUploader.js` - загрузка файлов
114
+ - `dist/services/awsFolderCreator.js` - создание папок
115
+ - `dist/subscribers/product_image_added/awsGenerateProductImageVariant.js` - генерация вариантов изображений
116
+ - Соответствующие TypeScript исходники в `src/`
117
+
118
+ ## Переменные окружения
119
+
120
+ Для работы с Yandex Cloud S3 добавьте следующие переменные в ваш `.env` файл:
121
+
122
+ ```env
123
+ # ID ключа доступа (можно получить в интерфейсе Yandex Cloud)
124
+ AWS_ACCESS_KEY_ID=your_access_key_id
125
+
126
+ # Секретный ключ доступа
127
+ AWS_SECRET_ACCESS_KEY=your_secret_access_key
128
+
129
+ # Имя бакета в Yandex Cloud
130
+ AWS_BUCKET_NAME=your_bucket_name
131
+
132
+ # Регион (для Yandex Cloud всегда используйте ru-central1)
133
+ AWS_REGION=ru-central1
134
+
135
+ # Endpoint для Yandex Cloud S3
136
+ AWS_ENDPOINT=https://storage.yandexcloud.net
137
+
138
+ # Обязательно для Yandex Cloud S3
139
+ AWS_S3_FORCE_PATH_STYLE=true
140
+ ```
141
+
142
+ ### Где получить ключи доступа
143
+
144
+ 1. Перейдите в [Yandex Cloud Console](https://console.cloud.yandex.ru/)
145
+ 2. Откройте раздел "Сервисные аккаунты"
146
+ 3. Создайте сервисный аккаунт или используйте существующий
147
+ 4. Создайте статический ключ доступа для сервисного аккаунта
148
+ 5. Скопируйте `Access Key ID` и `Secret Access Key`
149
+
150
+ ## Проверка работы
151
+
152
+ После применения патча убедитесь, что:
153
+
154
+ 1. Патч применен успешно (проверьте вывод `npm install` или `npx patch-package`)
155
+ 2. Переменные окружения настроены корректно
156
+ 3. Бакет существует и доступен с указанными ключами
157
+ 4. Приложение корректно загружает и отображает файлы из Yandex Cloud S3
158
+
159
+ ## Обновление патча
160
+
161
+ Если вы обновили версию `@evershop/s3_file_storage`, вам может потребоваться обновить патч:
162
+
163
+ 1. Удалите старый патч из папки `patches/`
164
+ 2. Установите новую версию `@evershop/s3_file_storage`
165
+ 3. Скопируйте новый патч из `node_modules/@luca324/yandex-evershop-s3/patches/` (если версия патча обновлена)
166
+ 4. Примените патч снова
167
+
168
+ ## Устранение неполадок
169
+
170
+ ### Патч не применяется
171
+
172
+ - Убедитесь, что `patch-package` установлен и скрипт `postinstall` настроен
173
+ - Проверьте, что патч находится в папке `patches/` в корне проекта
174
+ - Проверьте, что имя патча соответствует версии установленного `@evershop/s3_file_storage`
175
+
176
+ ### Ошибки при работе с S3
177
+
178
+ - Проверьте правильность переменных окружения
179
+ - Убедитесь, что ключи доступа имеют необходимые права
180
+ - Проверьте, что бакет существует и доступен
181
+ - Убедитесь, что `AWS_ENDPOINT` указан как `https://storage.yandexcloud.net`
182
+
57
183
  ## Лицензия
58
184
 
59
185
  MIT © [Luca324](https://github.com/Luca324)
60
186
 
187
+ ## Репозиторий
188
+
189
+ [https://github.com/Luca324/yandex-evershop-s3](https://github.com/Luca324/yandex-evershop-s3)
package/package.json CHANGED
@@ -1,25 +1,13 @@
1
1
  {
2
2
  "name": "@luca324/yandex-evershop-s3",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Patched version of @evershop/s3_file_storage with Yandex Cloud S3 support",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "prepare": "patch-package",
9
- "postinstall": "patch-package"
10
- },
11
- "dependencies": {
12
- "@evershop/s3_file_storage": "2.0.0",
13
- "patch-package": "^8.0.1"
14
- },
15
5
  "peerDependencies": {
16
6
  "@evershop/s3_file_storage": "^2.0.0"
17
7
  },
18
8
  "files": [
19
- "dist/",
20
9
  "patches/",
21
- "README.md",
22
- "LICENSE"
10
+ "README.md"
23
11
  ],
24
12
  "keywords": [
25
13
  "evershop",