@clairejs/server 3.19.3 → 3.19.4
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/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type UriMapperHandler = (tmpUri: string, locale?: string) => string;
|
|
1
|
+
export type UriMapperHandler = (tmpUri: string, index: number, locale?: string) => string;
|
|
@@ -121,8 +121,8 @@ export class ModelRepository extends AbstractRepository {
|
|
|
121
121
|
const modified = [];
|
|
122
122
|
const fileUploadHandler = await this.getUploadHandler();
|
|
123
123
|
const operations = [];
|
|
124
|
-
const uriHandler = async (tmpUri, uriMapper, locale, newUriCb) => {
|
|
125
|
-
const newUri = uriMapper(tmpUri, locale);
|
|
124
|
+
const uriHandler = async (tmpUri, index, uriMapper, locale, newUriCb) => {
|
|
125
|
+
const newUri = uriMapper(tmpUri, index, locale);
|
|
126
126
|
if (!newUri) {
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
@@ -134,30 +134,36 @@ export class ModelRepository extends AbstractRepository {
|
|
|
134
134
|
if (fileUploadHandler) {
|
|
135
135
|
for (const field of this.modelMetadata.fields) {
|
|
136
136
|
for (const record of records) {
|
|
137
|
-
if (field.uriMapper) {
|
|
138
|
-
const
|
|
139
|
-
|
|
137
|
+
if (field.uriMapper && record[field.name]) {
|
|
138
|
+
const mapper = field.uriMapper;
|
|
139
|
+
const tmpUri = field.vectorProps
|
|
140
|
+
? record[field.name]
|
|
141
|
+
: [record[field.name]];
|
|
142
|
+
if (!tmpUri.length) {
|
|
140
143
|
continue;
|
|
141
144
|
}
|
|
142
145
|
if (!field.mimeProps?.keepOnRemove) {
|
|
143
|
-
modified.push(tmpUri);
|
|
146
|
+
modified.push(...tmpUri);
|
|
144
147
|
}
|
|
145
|
-
operations.push(uriHandler(
|
|
148
|
+
operations.push(...tmpUri.map((uri, index) => uriHandler(uri, index, mapper, getSystemLocale(), (newUri) => (record[field.name] = newUri))));
|
|
146
149
|
}
|
|
147
150
|
else if (field.multiLocaleColumn) {
|
|
148
151
|
const targetField = this.modelMetadata.fields.find((f) => f.name === field.multiLocaleColumn);
|
|
149
152
|
if (targetField?.uriMapper && record[field.name]) {
|
|
153
|
+
const mapper = targetField.uriMapper;
|
|
150
154
|
//-- this field is locale for targetField, which has uri mapper
|
|
151
155
|
const localeUris = Object.keys(record[field.name]).map((lang) => [
|
|
152
156
|
lang,
|
|
153
|
-
|
|
157
|
+
targetField.vectorProps
|
|
158
|
+
? record[field.name][lang]
|
|
159
|
+
: [record[field.name][lang]],
|
|
154
160
|
]);
|
|
155
161
|
//-- for each pair or locale and tmp uri, invoke handle logic
|
|
156
162
|
for (const localeUri of localeUris) {
|
|
157
163
|
if (!targetField.mimeProps?.keepOnRemove) {
|
|
158
|
-
modified.push(localeUri[1]);
|
|
164
|
+
modified.push(...localeUri[1]);
|
|
159
165
|
}
|
|
160
|
-
operations.push(
|
|
166
|
+
operations.push(...localeUri[1].map((uri, index) => uriHandler(uri, index, mapper, localeUri[0], (newUri) => (record[field.name][localeUri[0]] = newUri))));
|
|
161
167
|
}
|
|
162
168
|
}
|
|
163
169
|
}
|
|
@@ -182,13 +188,18 @@ export class ModelRepository extends AbstractRepository {
|
|
|
182
188
|
for (const record of records) {
|
|
183
189
|
for (const field of this.modelMetadata.fields) {
|
|
184
190
|
if (field.uriMapper) {
|
|
185
|
-
|
|
191
|
+
const uri = record[field.name];
|
|
192
|
+
if (!uri) {
|
|
186
193
|
continue;
|
|
187
194
|
}
|
|
195
|
+
const uris = field.vectorProps ? uri : [uri];
|
|
188
196
|
mappingOperations.push((async () => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
197
|
+
const urls = await Promise.all(uris.map(async (uri) => {
|
|
198
|
+
return field.mimeProps?.public
|
|
199
|
+
? await fileUploadHandler.resolvePublicUrl(uri)
|
|
200
|
+
: await fileUploadHandler.resolvePrivateUrl(uri);
|
|
201
|
+
}));
|
|
202
|
+
record[field.name] = field.vectorProps ? urls : urls[0];
|
|
192
203
|
})());
|
|
193
204
|
}
|
|
194
205
|
else if (field.multiLocaleColumn) {
|
|
@@ -200,9 +211,16 @@ export class ModelRepository extends AbstractRepository {
|
|
|
200
211
|
}
|
|
201
212
|
for (const locale of Object.keys(localeObject)) {
|
|
202
213
|
mappingOperations.push((async () => {
|
|
203
|
-
localeObject[locale]
|
|
204
|
-
|
|
205
|
-
|
|
214
|
+
const uri = localeObject[locale];
|
|
215
|
+
if (!uri)
|
|
216
|
+
return;
|
|
217
|
+
const uris = targetField.vectorProps ? uri : [uri];
|
|
218
|
+
const urls = await Promise.all(uris.map(async (uri) => {
|
|
219
|
+
return targetField.mimeProps?.public
|
|
220
|
+
? await fileUploadHandler.resolvePublicUrl(uri)
|
|
221
|
+
: await fileUploadHandler.resolvePrivateUrl(uri);
|
|
222
|
+
}));
|
|
223
|
+
localeObject[locale] = targetField.vectorProps ? urls : urls[0];
|
|
206
224
|
})());
|
|
207
225
|
}
|
|
208
226
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clairejs/server",
|
|
3
|
-
"version": "3.19.
|
|
3
|
+
"version": "3.19.4",
|
|
4
4
|
"description": "Claire server NodeJs framework written in Typescript.",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"@clairejs/core": "^3.8.2",
|
|
38
|
-
"@clairejs/orm": "^3.15.
|
|
38
|
+
"@clairejs/orm": "^3.15.9"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/cookie-parser": "^1.4.3",
|