@crowdin/app-project-module 0.98.0-cf-15 → 0.98.0-cf-17
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.
package/out/index.js
CHANGED
|
@@ -174,7 +174,7 @@ function addCrowdinEndpoints(app, clientConfig) {
|
|
|
174
174
|
app.use(logsFormatter.contextResolverMiddleware());
|
|
175
175
|
app.use(logsFormatter.expressMiddleware());
|
|
176
176
|
}
|
|
177
|
-
app.use('/assets', (0, static_files_1.serveStatic)(config, 'static'));
|
|
177
|
+
app.use('/assets', (0, static_files_1.serveStatic)(config, config.assetsPath || 'static'));
|
|
178
178
|
app.get((0, util_1.getLogoUrl)(), (0, static_files_1.serveFile)(config, config.imagePath));
|
|
179
179
|
app.get('/manifest.json', json_response_1.default, (0, manifest_1.default)(config));
|
|
180
180
|
app.get('/', (0, about_1.default)(config));
|
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -10,20 +33,41 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
33
|
};
|
|
11
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
35
|
exports.applyFileProcessorsModuleDefaults = void 0;
|
|
13
|
-
|
|
14
|
-
|
|
36
|
+
function loadAwsSdk() {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
try {
|
|
39
|
+
const [s3Client, s3Presigner] = yield Promise.all([
|
|
40
|
+
Promise.resolve().then(() => __importStar(require('@aws-sdk/client-s3'))),
|
|
41
|
+
Promise.resolve().then(() => __importStar(require('@aws-sdk/s3-request-presigner'))),
|
|
42
|
+
]);
|
|
43
|
+
return {
|
|
44
|
+
S3Client: s3Client.S3Client,
|
|
45
|
+
GetObjectCommand: s3Client.GetObjectCommand,
|
|
46
|
+
PutObjectCommand: s3Client.PutObjectCommand,
|
|
47
|
+
getSignedUrl: s3Presigner.getSignedUrl,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch (_a) {
|
|
51
|
+
throw new Error('AWS SDK is not installed. To use S3 file storage, install required packages:\n' +
|
|
52
|
+
'npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
15
56
|
function applyFileProcessorsModuleDefaults(config, fileModule) {
|
|
16
57
|
var _a, _b;
|
|
17
58
|
const AWS_TMP_BUCKET_NAME = (_a = config.awsConfig) === null || _a === void 0 ? void 0 : _a.tmpBucketName;
|
|
18
59
|
const AWS_REGION = (_b = config.awsConfig) === null || _b === void 0 ? void 0 : _b.region;
|
|
19
60
|
if (AWS_TMP_BUCKET_NAME && AWS_REGION && !fileModule.storeFile) {
|
|
20
|
-
|
|
61
|
+
let initPromise = null;
|
|
62
|
+
const getS3 = () => (initPromise !== null && initPromise !== void 0 ? initPromise : (initPromise = loadAwsSdk().then(sdk => ({ sdk, s3: new sdk.S3Client({ region: AWS_REGION }) }))));
|
|
21
63
|
fileModule.storeFile = (content) => __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const { sdk, s3 } = yield getS3();
|
|
65
|
+
const { GetObjectCommand, PutObjectCommand, getSignedUrl } = sdk;
|
|
22
66
|
const fileName = `file-${config.identifier}-${Date.now()}`;
|
|
23
|
-
const command = new
|
|
67
|
+
const command = new PutObjectCommand({ Bucket: AWS_TMP_BUCKET_NAME, Key: fileName, Body: content });
|
|
24
68
|
yield s3.send(command);
|
|
25
|
-
const getObjectCommand = new
|
|
26
|
-
return
|
|
69
|
+
const getObjectCommand = new GetObjectCommand({ Bucket: AWS_TMP_BUCKET_NAME, Key: fileName });
|
|
70
|
+
return getSignedUrl(s3, getObjectCommand, { expiresIn: 3600 });
|
|
27
71
|
});
|
|
28
72
|
}
|
|
29
73
|
}
|
package/out/types.d.ts
CHANGED
|
@@ -286,6 +286,10 @@ export interface ClientConfig extends ImagePath {
|
|
|
286
286
|
* custom file storage
|
|
287
287
|
*/
|
|
288
288
|
fileStore?: FileStore;
|
|
289
|
+
/**
|
|
290
|
+
* path to assets files directory (default: 'static')
|
|
291
|
+
*/
|
|
292
|
+
assetsPath?: string;
|
|
289
293
|
}
|
|
290
294
|
export interface AssetsConfig {
|
|
291
295
|
/**
|
package/out/util/static-files.js
CHANGED
|
@@ -25,6 +25,9 @@ const path_1 = __importDefault(require("path"));
|
|
|
25
25
|
function proxyAssetsResponse(fetcher, assetPath, baseUrl, req, res, next) {
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
27
|
try {
|
|
28
|
+
if (assetPath === '/') {
|
|
29
|
+
return next();
|
|
30
|
+
}
|
|
28
31
|
const assetUrl = new URL(assetPath, baseUrl);
|
|
29
32
|
const response = yield fetcher.fetch(assetUrl.toString());
|
|
30
33
|
if (!response.ok) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crowdin/app-project-module",
|
|
3
|
-
"version": "0.98.0-cf-
|
|
3
|
+
"version": "0.98.0-cf-17",
|
|
4
4
|
"description": "Module that generates for you all common endpoints for serving standalone Crowdin App",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"types": "out/index.d.ts",
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
"out/**/*"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@aws-sdk/client-s3": "^3.758.0",
|
|
23
|
-
"@aws-sdk/s3-request-presigner": "^3.758.0",
|
|
24
22
|
"@crowdin/crowdin-apps-functions": "^0.12.0",
|
|
25
23
|
"@crowdin/logs-formatter": "^2.1.8",
|
|
26
24
|
"@godaddy/terminus": "^4.12.1",
|
|
@@ -43,7 +41,21 @@
|
|
|
43
41
|
"swagger-jsdoc": "^6.2.8",
|
|
44
42
|
"uuid": "^8.3.2"
|
|
45
43
|
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@aws-sdk/client-s3": "^3.758.0",
|
|
46
|
+
"@aws-sdk/s3-request-presigner": "^3.758.0"
|
|
47
|
+
},
|
|
48
|
+
"peerDependenciesMeta": {
|
|
49
|
+
"@aws-sdk/client-s3": {
|
|
50
|
+
"optional": true
|
|
51
|
+
},
|
|
52
|
+
"@aws-sdk/s3-request-presigner": {
|
|
53
|
+
"optional": true
|
|
54
|
+
}
|
|
55
|
+
},
|
|
46
56
|
"devDependencies": {
|
|
57
|
+
"@aws-sdk/client-s3": "^3.758.0",
|
|
58
|
+
"@aws-sdk/s3-request-presigner": "^3.758.0",
|
|
47
59
|
"@babel/preset-react": "^7.26.3",
|
|
48
60
|
"@cloudflare/workers-types": "^4.20251117.0",
|
|
49
61
|
"@emotion/react": "^11.14.0",
|