pim-import 5.0.1 → 5.0.2

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 (249) hide show
  1. package/dist/algolia/clean.js +0 -1
  2. package/dist/algolia/config.js +0 -1
  3. package/dist/algolia/downloads.js +0 -1
  4. package/dist/algolia/families.js +0 -1
  5. package/dist/algolia/inspirations.js +0 -1
  6. package/dist/algolia/models.js +0 -1
  7. package/dist/algolia/news.js +0 -1
  8. package/dist/algolia/pressRelease.js +0 -1
  9. package/dist/algolia/pressReview.js +0 -1
  10. package/dist/algolia/products.js +0 -1
  11. package/dist/algolia/projects.js +0 -1
  12. package/dist/algolia/stories.js +0 -1
  13. package/dist/algolia/subFamilies.js +0 -1
  14. package/dist/algolia/subModels.js +0 -1
  15. package/dist/browser.js +0 -1
  16. package/dist/downloads/classes/manageEntry.js +0 -1
  17. package/dist/downloads/import.js +0 -1
  18. package/dist/index.js +0 -1
  19. package/dist/libs/contentful-cda.js +0 -1
  20. package/dist/libs/contentful.js +0 -1
  21. package/dist/libs/imgix.js +0 -1
  22. package/dist/libs/logs.js +0 -1
  23. package/dist/libs/netlify.js +0 -1
  24. package/dist/libs/notifications.js +0 -1
  25. package/dist/libs/pdf.js +0 -1
  26. package/dist/libs/s3.js +0 -1
  27. package/dist/libs/sentry.js +0 -1
  28. package/dist/pim/config.js +0 -1
  29. package/dist/pim/endpoints.js +0 -1
  30. package/dist/pim/methods/bulkPublish.js +0 -1
  31. package/dist/pim/methods/catalogs.js +0 -1
  32. package/dist/pim/methods/checkTopicDraftAndPagePublished.js +0 -1
  33. package/dist/pim/methods/designers.js +0 -1
  34. package/dist/pim/methods/dictionary.js +0 -1
  35. package/dist/pim/methods/families.js +0 -1
  36. package/dist/pim/methods/latestProducts.js +0 -1
  37. package/dist/pim/methods/migrateEntryFields.js +0 -1
  38. package/dist/pim/methods/models.js +0 -1
  39. package/dist/pim/methods/pages/catalogs.js +0 -1
  40. package/dist/pim/methods/pages/families.js +0 -1
  41. package/dist/pim/methods/pages/subfamilies.js +0 -1
  42. package/dist/pim/methods/products.js +0 -1
  43. package/dist/pim/methods/subfamilies.js +0 -1
  44. package/dist/pim/methods/submodels.js +0 -1
  45. package/dist/pim/request.js +0 -1
  46. package/dist/resources/AllProducts.js +0 -1
  47. package/dist/resources/Audit.js +0 -1
  48. package/dist/resources/CatalogDetails.js +0 -1
  49. package/dist/resources/CollectionModels.js +0 -1
  50. package/dist/resources/CollectionSubFamilies.js +0 -1
  51. package/dist/resources/CollectionSubModels.js +0 -1
  52. package/dist/resources/DProductSubLine.js +0 -1
  53. package/dist/resources/FamilyDetails.js +0 -1
  54. package/dist/resources/ProductDetails.js +0 -1
  55. package/dist/resources/ProductRelation.js +0 -1
  56. package/dist/resources/cfFields.js +0 -1
  57. package/dist/types.js +0 -1
  58. package/dist/utils.js +0 -1
  59. package/package.json +7 -2
  60. package/.env.example +0 -45
  61. package/.nvmrc +0 -1
  62. package/.vscode/settings.json +0 -21
  63. package/dist/algolia/clean.js.map +0 -1
  64. package/dist/algolia/config.js.map +0 -1
  65. package/dist/algolia/downloads.js.map +0 -1
  66. package/dist/algolia/families.js.map +0 -1
  67. package/dist/algolia/inspirations.js.map +0 -1
  68. package/dist/algolia/models.js.map +0 -1
  69. package/dist/algolia/news.js.map +0 -1
  70. package/dist/algolia/pressRelease.js.map +0 -1
  71. package/dist/algolia/pressReview.js.map +0 -1
  72. package/dist/algolia/products.js.map +0 -1
  73. package/dist/algolia/projects.js.map +0 -1
  74. package/dist/algolia/stories.js.map +0 -1
  75. package/dist/algolia/subFamilies.js.map +0 -1
  76. package/dist/algolia/subModels.js.map +0 -1
  77. package/dist/browser.js.map +0 -1
  78. package/dist/downloads/classes/manageEntry.js.map +0 -1
  79. package/dist/downloads/import.js.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/libs/contentful-cda.js.map +0 -1
  82. package/dist/libs/contentful.js.map +0 -1
  83. package/dist/libs/imgix.js.map +0 -1
  84. package/dist/libs/logs.js.map +0 -1
  85. package/dist/libs/netlify.js.map +0 -1
  86. package/dist/libs/notifications.js.map +0 -1
  87. package/dist/libs/pdf.js.map +0 -1
  88. package/dist/libs/s3.js.map +0 -1
  89. package/dist/libs/sentry.js.map +0 -1
  90. package/dist/pim/config.js.map +0 -1
  91. package/dist/pim/endpoints.js.map +0 -1
  92. package/dist/pim/methods/bulkPublish.js.map +0 -1
  93. package/dist/pim/methods/catalogs.js.map +0 -1
  94. package/dist/pim/methods/checkTopicDraftAndPagePublished.js.map +0 -1
  95. package/dist/pim/methods/designers.js.map +0 -1
  96. package/dist/pim/methods/dictionary.js.map +0 -1
  97. package/dist/pim/methods/families.js.map +0 -1
  98. package/dist/pim/methods/latestProducts.js.map +0 -1
  99. package/dist/pim/methods/migrateEntryFields.js.map +0 -1
  100. package/dist/pim/methods/models.js.map +0 -1
  101. package/dist/pim/methods/pages/catalogs.js.map +0 -1
  102. package/dist/pim/methods/pages/families.js.map +0 -1
  103. package/dist/pim/methods/pages/subfamilies.js.map +0 -1
  104. package/dist/pim/methods/products.js.map +0 -1
  105. package/dist/pim/methods/subfamilies.js.map +0 -1
  106. package/dist/pim/methods/submodels.js.map +0 -1
  107. package/dist/pim/request.js.map +0 -1
  108. package/dist/resources/AllProducts.js.map +0 -1
  109. package/dist/resources/Audit.js.map +0 -1
  110. package/dist/resources/CatalogDetails.js.map +0 -1
  111. package/dist/resources/CollectionModels.js.map +0 -1
  112. package/dist/resources/CollectionSubFamilies.js.map +0 -1
  113. package/dist/resources/CollectionSubModels.js.map +0 -1
  114. package/dist/resources/DProductSubLine.js.map +0 -1
  115. package/dist/resources/FamilyDetails.js.map +0 -1
  116. package/dist/resources/ProductDetails.js.map +0 -1
  117. package/dist/resources/ProductRelation.js.map +0 -1
  118. package/dist/resources/cfFields.js.map +0 -1
  119. package/dist/types.js.map +0 -1
  120. package/dist/utils.js.map +0 -1
  121. package/docs/import-data-from-the-dictionary.md +0 -83
  122. package/docs/import-products.md +0 -61
  123. package/docs/import-taxonomies-from-the-catalog.md +0 -60
  124. package/docs/settings.md +0 -47
  125. package/jest.config.js +0 -16
  126. package/local-fn/reindex.js +0 -182
  127. package/src/algolia/clean.ts +0 -164
  128. package/src/algolia/config.ts +0 -390
  129. package/src/algolia/downloads.ts +0 -346
  130. package/src/algolia/families.ts +0 -652
  131. package/src/algolia/inspirations.ts +0 -315
  132. package/src/algolia/models.ts +0 -589
  133. package/src/algolia/news.ts +0 -258
  134. package/src/algolia/pressRelease.ts +0 -255
  135. package/src/algolia/pressReview.ts +0 -247
  136. package/src/algolia/products.ts +0 -731
  137. package/src/algolia/projects.ts +0 -339
  138. package/src/algolia/stories.ts +0 -347
  139. package/src/algolia/subFamilies.ts +0 -709
  140. package/src/algolia/subModels.ts +0 -359
  141. package/src/browser.ts +0 -122
  142. package/src/downloads/classes/manageEntry.ts +0 -99
  143. package/src/downloads/csv/legal.csv +0 -5
  144. package/src/downloads/csv/products.csv +0 -373
  145. package/src/downloads/import.ts +0 -381
  146. package/src/index.ts +0 -140
  147. package/src/libs/contentful-cda.ts +0 -543
  148. package/src/libs/contentful.ts +0 -1453
  149. package/src/libs/imgix.ts +0 -297
  150. package/src/libs/logs.ts +0 -121
  151. package/src/libs/netlify.ts +0 -37
  152. package/src/libs/notifications.ts +0 -104
  153. package/src/libs/pdf.ts +0 -107
  154. package/src/libs/s3.ts +0 -305
  155. package/src/libs/sentry.ts +0 -33
  156. package/src/pim/config.ts +0 -84
  157. package/src/pim/data/productFields.json +0 -1178
  158. package/src/pim/endpoints.ts +0 -364
  159. package/src/pim/methods/bulkPublish.ts +0 -266
  160. package/src/pim/methods/catalogs.ts +0 -586
  161. package/src/pim/methods/checkTopicDraftAndPagePublished.ts +0 -70
  162. package/src/pim/methods/designers.ts +0 -128
  163. package/src/pim/methods/dictionary.ts +0 -611
  164. package/src/pim/methods/families.ts +0 -345
  165. package/src/pim/methods/latestProducts.ts +0 -70
  166. package/src/pim/methods/migrateEntryFields.ts +0 -99
  167. package/src/pim/methods/models.ts +0 -349
  168. package/src/pim/methods/pages/catalogs.ts +0 -28
  169. package/src/pim/methods/pages/families.ts +0 -50
  170. package/src/pim/methods/pages/subfamilies.ts +0 -98
  171. package/src/pim/methods/products.ts +0 -3297
  172. package/src/pim/methods/subfamilies.ts +0 -706
  173. package/src/pim/methods/submodels.ts +0 -262
  174. package/src/pim/request.ts +0 -61
  175. package/src/resources/AllProducts.ts +0 -41
  176. package/src/resources/Audit.ts +0 -24
  177. package/src/resources/CatalogDetails.ts +0 -51
  178. package/src/resources/CollectionModels.ts +0 -42
  179. package/src/resources/CollectionSubFamilies.ts +0 -45
  180. package/src/resources/CollectionSubModels.ts +0 -36
  181. package/src/resources/DProductSubLine.ts +0 -34
  182. package/src/resources/FamilyDetails.ts +0 -31
  183. package/src/resources/ProductDetails.ts +0 -352
  184. package/src/resources/ProductRelation.ts +0 -24
  185. package/src/resources/cfFields.ts +0 -8
  186. package/src/types.ts +0 -268
  187. package/src/utils.ts +0 -553
  188. package/tsconfig.json +0 -93
  189. package/tslint.json +0 -22
  190. package/types/libs/puppeteer.d.ts +0 -17
  191. package/types/pim/methods/checkIp.d.ts +0 -1
  192. /package/{types → dist}/algolia/clean.d.ts +0 -0
  193. /package/{types → dist}/algolia/config.d.ts +0 -0
  194. /package/{types → dist}/algolia/downloads.d.ts +0 -0
  195. /package/{types → dist}/algolia/families.d.ts +0 -0
  196. /package/{types → dist}/algolia/inspirations.d.ts +0 -0
  197. /package/{types → dist}/algolia/models.d.ts +0 -0
  198. /package/{types → dist}/algolia/news.d.ts +0 -0
  199. /package/{types → dist}/algolia/pressRelease.d.ts +0 -0
  200. /package/{types → dist}/algolia/pressReview.d.ts +0 -0
  201. /package/{types → dist}/algolia/products.d.ts +0 -0
  202. /package/{types → dist}/algolia/projects.d.ts +0 -0
  203. /package/{types → dist}/algolia/stories.d.ts +0 -0
  204. /package/{types → dist}/algolia/subFamilies.d.ts +0 -0
  205. /package/{types → dist}/algolia/subModels.d.ts +0 -0
  206. /package/{types → dist}/browser.d.ts +0 -0
  207. /package/{types → dist}/downloads/classes/manageEntry.d.ts +0 -0
  208. /package/{types → dist}/downloads/import.d.ts +0 -0
  209. /package/{types → dist}/index.d.ts +0 -0
  210. /package/{types → dist}/libs/contentful-cda.d.ts +0 -0
  211. /package/{types → dist}/libs/contentful.d.ts +0 -0
  212. /package/{types → dist}/libs/imgix.d.ts +0 -0
  213. /package/{types → dist}/libs/logs.d.ts +0 -0
  214. /package/{types → dist}/libs/netlify.d.ts +0 -0
  215. /package/{types → dist}/libs/notifications.d.ts +0 -0
  216. /package/{types → dist}/libs/pdf.d.ts +0 -0
  217. /package/{types → dist}/libs/s3.d.ts +0 -0
  218. /package/{types → dist}/libs/sentry.d.ts +0 -0
  219. /package/{types → dist}/pim/config.d.ts +0 -0
  220. /package/{types → dist}/pim/endpoints.d.ts +0 -0
  221. /package/{types → dist}/pim/methods/bulkPublish.d.ts +0 -0
  222. /package/{types → dist}/pim/methods/catalogs.d.ts +0 -0
  223. /package/{types → dist}/pim/methods/checkTopicDraftAndPagePublished.d.ts +0 -0
  224. /package/{types → dist}/pim/methods/designers.d.ts +0 -0
  225. /package/{types → dist}/pim/methods/dictionary.d.ts +0 -0
  226. /package/{types → dist}/pim/methods/families.d.ts +0 -0
  227. /package/{types → dist}/pim/methods/latestProducts.d.ts +0 -0
  228. /package/{types → dist}/pim/methods/migrateEntryFields.d.ts +0 -0
  229. /package/{types → dist}/pim/methods/models.d.ts +0 -0
  230. /package/{types → dist}/pim/methods/pages/catalogs.d.ts +0 -0
  231. /package/{types → dist}/pim/methods/pages/families.d.ts +0 -0
  232. /package/{types → dist}/pim/methods/pages/subfamilies.d.ts +0 -0
  233. /package/{types → dist}/pim/methods/products.d.ts +0 -0
  234. /package/{types → dist}/pim/methods/subfamilies.d.ts +0 -0
  235. /package/{types → dist}/pim/methods/submodels.d.ts +0 -0
  236. /package/{types → dist}/pim/request.d.ts +0 -0
  237. /package/{types → dist}/resources/AllProducts.d.ts +0 -0
  238. /package/{types → dist}/resources/Audit.d.ts +0 -0
  239. /package/{types → dist}/resources/CatalogDetails.d.ts +0 -0
  240. /package/{types → dist}/resources/CollectionModels.d.ts +0 -0
  241. /package/{types → dist}/resources/CollectionSubFamilies.d.ts +0 -0
  242. /package/{types → dist}/resources/CollectionSubModels.d.ts +0 -0
  243. /package/{types → dist}/resources/DProductSubLine.d.ts +0 -0
  244. /package/{types → dist}/resources/FamilyDetails.d.ts +0 -0
  245. /package/{types → dist}/resources/ProductDetails.d.ts +0 -0
  246. /package/{types → dist}/resources/ProductRelation.d.ts +0 -0
  247. /package/{types → dist}/resources/cfFields.d.ts +0 -0
  248. /package/{types → dist}/types.d.ts +0 -0
  249. /package/{types → dist}/utils.d.ts +0 -0
package/src/libs/s3.ts DELETED
@@ -1,305 +0,0 @@
1
- import dotenv from "dotenv";
2
- import axios from "@atoms-studio/axios";
3
- import AWS from "aws-sdk";
4
- import { basename, secondBetweenTwoDate } from "../utils";
5
- import {
6
- config as configPim,
7
- checkConfig as checkPimConfig,
8
- } from "../pim/config";
9
- import https from "https";
10
- import { AvailableCatalogs } from "../types";
11
- import { log } from "./logs";
12
- dotenv.config();
13
-
14
- interface AWSConfig {
15
- accessKeyId: string;
16
- secretAccessKey: string;
17
- region: string;
18
- }
19
- interface Config extends AWSConfig {
20
- bucket: string;
21
- }
22
-
23
- export let config: Config;
24
- export let s3: AWS.S3;
25
-
26
- export const checkConfig = (skipInit: boolean = false): void => {
27
- if (!skipInit) {
28
- init();
29
- }
30
- const beforeMessage = "S3 - ";
31
- const afterMessage: string =
32
- 'You must call "init" before using any s3 method';
33
- if (typeof config === "undefined") {
34
- throw new Error(beforeMessage + "config not found. " + afterMessage);
35
- } else if (!config.accessKeyId) {
36
- throw new Error(beforeMessage + "accessKeyId not found. " + afterMessage);
37
- } else if (!config.secretAccessKey) {
38
- throw new Error(
39
- beforeMessage + "secretAccessKey not found. " + afterMessage
40
- );
41
- } else if (!config.region) {
42
- throw new Error(beforeMessage + "region not found. " + afterMessage);
43
- } else if (!config.bucket) {
44
- throw new Error(beforeMessage + "bucket not found. " + afterMessage);
45
- }
46
-
47
- AWS.config.update({
48
- accessKeyId: config.accessKeyId,
49
- secretAccessKey: config.secretAccessKey,
50
- region: config.region,
51
- });
52
- s3 = new AWS.S3();
53
- };
54
-
55
- export const init = (opts?: Config): void => {
56
- if (!opts) {
57
- opts = {
58
- accessKeyId: process.env.FPI_AWS_ACCESS_KEY!,
59
- secretAccessKey: process.env.FPI_AWS_SECRET_ACCESS_KEY!,
60
- region: process.env.FPI_AWS_REGION!,
61
- bucket: process.env.FPI_AWS_S3_BUCKET!,
62
- };
63
- }
64
- config = { ...opts };
65
- checkConfig(true);
66
- };
67
-
68
- export const listObjects = async (prefix: string = "") => {
69
- checkConfig();
70
-
71
- const params = {
72
- Bucket: config.bucket /* required */,
73
- Prefix: prefix || "", // Can be your folder name
74
- };
75
-
76
- return s3
77
- .listObjectsV2(params)
78
- .promise()
79
- .then((data) => {
80
- return data;
81
- })
82
- .catch((err) => {
83
- console.log(err);
84
- throw new Error("Not exist folder exception is not catch here!");
85
- });
86
- };
87
- /**
88
- * Upload file to s3
89
- *
90
- * @example
91
- * upload('https://domain.com/myimage.jpg', 'myimage.jpg', 'dir/subdir')
92
- *
93
- * @param url File URL
94
- * @param fileName File name
95
- * @param path Path of s3 in which to save the file
96
- * @param metaData Object of metadata es: { metadata1: "value1", metadata2: "value2" } // See https://stackoverflow.com/a/50187528
97
- * @returns
98
- */
99
- export const upload = async (
100
- url: string,
101
- fileName: string = "",
102
- path: string = "",
103
- metaData: any = {}
104
- ) => {
105
- checkConfig();
106
-
107
- const agent = new https.Agent({
108
- rejectUnauthorized: false,
109
- });
110
-
111
- const fileRes = await axios.get(url, {
112
- httpsAgent: agent,
113
- responseType: "arraybuffer",
114
- });
115
-
116
- if (fileRes.status !== 200) {
117
- throw new Error(
118
- `Status: ${fileRes.status}. ${fileRes.statusText} \n URL: ${fileRes.config.url}`
119
- );
120
- }
121
-
122
- if (path && path.substr(-1) !== "/") {
123
- path += "/";
124
- }
125
-
126
- fileName = fileName || basename(url);
127
-
128
- let contentLength = Number(fileRes.headers["content-length"]);
129
- if (!contentLength) {
130
- contentLength = Number(fileRes.data.byteLength); // 93473
131
- }
132
-
133
- const obj = {
134
- Bucket: config.bucket, // unique bucket name
135
- Key: `${path}${fileName}`, // s3 file path es: dir/subdir/filename.ext
136
- ContentType: fileRes.headers["content-type"],
137
- ContentLength: contentLength,
138
- Body: fileRes.data, // buffer
139
- Metadata: metaData,
140
- };
141
-
142
- return s3
143
- .upload(obj)
144
- .promise()
145
- .then((data) => {
146
- return data;
147
- })
148
- .catch((err) => {
149
- throw new Error(err);
150
- });
151
- };
152
-
153
- export const getFileFromS3 = async (
154
- path: string,
155
- returnUrl: boolean = false
156
- ): Promise<any> => {
157
- checkConfig();
158
- const url = `https://${config.bucket}.s3.${config.region}.amazonaws.com/${path}`;
159
- try {
160
- const res = await axios.get(url);
161
- if (returnUrl) {
162
- return url;
163
- } else {
164
- return res.data;
165
- }
166
- } catch (err: any) {
167
- log(`S3 file not found. ${url}`);
168
- return false;
169
- }
170
- };
171
-
172
- export const saveCatalogToS3 = async (catalog: AvailableCatalogs) => {
173
- checkPimConfig();
174
- checkConfig();
175
-
176
- const timeStart = new Date();
177
- const dateNow = new Date();
178
- const dateDirName = dateNow.toISOString().split("T")[0]; // 2021-05-07T13-35-00-057Z
179
-
180
- const path = `pim/${dateDirName}/catalog/`;
181
- const fileName = `catalogs-${catalog}.json`;
182
- const fileUrl = `${configPim.baseURL}catalogs?onlyweb=true&catalog=${catalog}`;
183
-
184
- log(`Uploading "${fileName}" to S3 path "${path}"`, "INFO");
185
- await upload(fileUrl, fileName, path);
186
- log(`"${fileName}" saved to S3`);
187
-
188
- const timeEnd = new Date();
189
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
190
- log(`Request time: ${seconds} seconds - saveCatalogToS3`);
191
-
192
- return `${path}${fileName}`;
193
- };
194
-
195
- export const saveAllProductsToS3 = async (
196
- catalog: AvailableCatalogs,
197
- lastModified: string
198
- ) => {
199
- checkPimConfig();
200
- checkConfig();
201
-
202
- const timeStart = new Date();
203
- const dateNow = new Date();
204
- const dateDirName = dateNow.toISOString().split("T")[0]; // 2021-05-07
205
-
206
- const path = `pim/${dateDirName}/all-products/`;
207
- const fileName = `all-products-${catalog}-${lastModified}.json`;
208
- const fileUrl = `${configPim.baseURL}products/?onlyweb=true&catalog=${catalog}&lastModified=${lastModified}`;
209
-
210
- log(`Uploading "${fileName}" to S3 path "${path}"`, "INFO");
211
- await upload(fileUrl, fileName, path);
212
- log(`"${fileName}" saved to S3`);
213
-
214
- const timeEnd = new Date();
215
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
216
- log(`Request time: ${seconds} seconds - saveAllProductsToS3`);
217
-
218
- return `${path}${fileName}`;
219
- };
220
-
221
- export const saveJsonToS3 = async (
222
- obj: any,
223
- fileName: string = "",
224
- path: string = ""
225
- ) => {
226
- checkConfig();
227
- const timeStart = new Date();
228
-
229
- if (typeof obj !== "string") {
230
- obj = JSON.stringify(obj);
231
- }
232
-
233
- const buf = Buffer.from(obj);
234
-
235
- // add trailing slash
236
- if (path && path.substr(-1) !== "/") {
237
- path += "/";
238
- }
239
-
240
- const data = {
241
- Bucket: config.bucket, // unique bucket name
242
- Key: `${path}${fileName}`, // s3 file path es: dir/subdir/filename.ext
243
- ContentEncoding: "base64",
244
- ContentType: "application/json",
245
- ContentLength: Number(buf.byteLength),
246
- Body: buf,
247
- };
248
-
249
- return s3
250
- .upload(data)
251
- .promise()
252
- .then((res) => {
253
- const timeEnd = new Date();
254
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
255
- log(`Request time: ${seconds} seconds - saveJsonToS3`);
256
- return res;
257
- })
258
- .catch((err) => {
259
- throw new Error(err);
260
- });
261
- };
262
-
263
- /**
264
- * Save PDF to S3
265
- *
266
- * @param pdf
267
- * @param fileName E.g. my-file
268
- * @param path E.g. tech-spec
269
- * @returns url
270
- */
271
- export const savePDFToS3 = async (
272
- pdf: any,
273
- fileName: string,
274
- path: string = ""
275
- ) => {
276
- fileName = !fileName.match(/\.pdf?$/) ? fileName + ".pdf" : fileName;
277
- log(`savePDFToS3 - fileName: ${fileName} path: ${path}`);
278
- checkConfig();
279
- const timeStart = new Date();
280
-
281
- // add trailing slash
282
- if (path && path.substr(-1) !== "/") {
283
- path += "/";
284
- }
285
-
286
- const s3Params = {
287
- Bucket: config.bucket, // unique bucket name
288
- Key: `${path}${fileName}`, // s3 file path es: dir/subdir/filename.ext
289
- Body: pdf,
290
- ContentType: "application/pdf",
291
- ServerSideEncryption: "AES256",
292
- };
293
- let url;
294
- try {
295
- s3.getBucketWebsite();
296
- await s3.putObject(s3Params).promise();
297
- url = `https://${config.bucket}.s3.${config.region}.amazonaws.com/${path}${fileName}`;
298
- } catch (err: any) {
299
- console.log(err);
300
- }
301
- const timeEnd = new Date();
302
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
303
- log(`Request time: ${seconds} seconds - savePDFToS3`);
304
- return url;
305
- };
@@ -1,33 +0,0 @@
1
- import dotenv from "dotenv";
2
- dotenv.config();
3
- import * as Sentry from "@sentry/node";
4
- // import * as Tracing from "@sentry/tracing";
5
- let sentryInitialized = false;
6
-
7
- export const initSentry = async () => {
8
- if (process.env.FPI_SENTRY_DSN) {
9
- const sentry = await Sentry.init({
10
- dsn: process.env.FPI_SENTRY_DSN,
11
-
12
- // Set tracesSampleRate to 1.0 to capture 100%
13
- // of transactions for performance monitoring.
14
- // We recommend adjusting this value in production
15
- tracesSampleRate: Number(process.env.FPI_SENTRY_TRACE_SAMPLE_RATE) || 1.0,
16
- });
17
- sentryInitialized = true;
18
- return sentry;
19
- } else {
20
- throw new Error("No FPI_SENTRY_DSN evironment var found");
21
- }
22
- };
23
-
24
- export const reportError = async (error: any) => {
25
- if (!sentryInitialized) await initSentry();
26
-
27
- if (typeof error === "string") {
28
- Sentry.captureMessage(error);
29
- } else {
30
- Sentry.captureException(error);
31
- }
32
- await Sentry.flush();
33
- };
package/src/pim/config.ts DELETED
@@ -1,84 +0,0 @@
1
- import dotenv from "dotenv";
2
- import { resetBaseRequest } from "./request";
3
- dotenv.config();
4
-
5
- export interface Config {
6
- baseURL: string;
7
- username?: string;
8
- password?: string;
9
- timeout?: number;
10
- sslverify?: boolean;
11
- }
12
-
13
- export const defaultConfig: Readonly<Config> = {
14
- baseURL: "",
15
- username: "",
16
- password: "",
17
- timeout: 300,
18
- sslverify: true,
19
- };
20
-
21
- export let config: Config = { ...defaultConfig };
22
-
23
- export const resetConfig = (): void => {
24
- Object.assign(config, defaultConfig);
25
- resetBaseRequest();
26
- };
27
-
28
- export const checkConfig = (skipInit: boolean = false) => {
29
- if (!skipInit) {
30
- init();
31
- }
32
- if (!Object.entries(config).length) {
33
- throw new Error("Required parameters not found");
34
- } else if (!config.baseURL) {
35
- throw new Error("Missing pim baseURL");
36
- } else if (
37
- typeof config.timeout !== "undefined" &&
38
- (isNaN(config.timeout) || config.timeout === 0)
39
- ) {
40
- throw new Error("The pim timeout value is not valid");
41
- }
42
- };
43
-
44
- export const init = (providedConfig?: Config) => {
45
- const hasPrarams = !!(
46
- providedConfig && Object.entries(providedConfig).length
47
- );
48
- if (!hasPrarams) {
49
- providedConfig = {
50
- baseURL: process.env.FPI_PIM_BASE_URL!,
51
- username: process.env.FPI_PIM_USERNAME,
52
- password: process.env.FPI_PIM_PASSWORD,
53
- timeout: Number(process.env.FPI_PIM_TIMEOUT) || 300,
54
- sslverify: process.env.FPI_PIM_SSL_VERIFY === "true",
55
- };
56
- } else if (!providedConfig) {
57
- throw new Error("Configuration params not found");
58
- }
59
-
60
- // required params
61
- config.baseURL = providedConfig.baseURL;
62
-
63
- // optional params
64
- config.username =
65
- typeof providedConfig.username !== "undefined"
66
- ? providedConfig.username
67
- : defaultConfig.username;
68
- config.password =
69
- typeof providedConfig.password !== "undefined"
70
- ? providedConfig.password
71
- : defaultConfig.password;
72
- config.timeout =
73
- typeof providedConfig.timeout !== "undefined"
74
- ? Number(providedConfig.timeout)
75
- : defaultConfig.timeout;
76
- config.sslverify =
77
- typeof providedConfig.sslverify !== "undefined"
78
- ? !!providedConfig.sslverify
79
- : defaultConfig.sslverify;
80
-
81
- checkConfig(true);
82
- };
83
-
84
- export const getConfig = (): Readonly<Config> => config;