@clairejs/server 3.19.3 → 3.19.5
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,43 +121,58 @@ 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
|
|
125
|
-
const newUri = uriMapper(tmpUri, locale);
|
|
124
|
+
const uriHandler = async (tmpUri, index, uriMapper, locale) => {
|
|
125
|
+
const newUri = uriMapper(tmpUri, index, locale);
|
|
126
126
|
if (!newUri) {
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
//-- move from currentUri to newUri
|
|
130
130
|
await fileUploadHandler.copyFile(tmpUri, newUri);
|
|
131
131
|
//-- update record value and not persist yet
|
|
132
|
-
newUriCb(newUri);
|
|
132
|
+
// newUriCb(newUri);
|
|
133
|
+
return newUri;
|
|
133
134
|
};
|
|
134
135
|
if (fileUploadHandler) {
|
|
135
136
|
for (const field of this.modelMetadata.fields) {
|
|
136
137
|
for (const record of records) {
|
|
137
|
-
if (field.uriMapper) {
|
|
138
|
-
const
|
|
139
|
-
|
|
138
|
+
if (field.uriMapper && record[field.name]) {
|
|
139
|
+
const mapper = field.uriMapper;
|
|
140
|
+
const tmpUris = field.vectorProps
|
|
141
|
+
? record[field.name]
|
|
142
|
+
: [record[field.name]];
|
|
143
|
+
if (!tmpUris.length) {
|
|
140
144
|
continue;
|
|
141
145
|
}
|
|
142
146
|
if (!field.mimeProps?.keepOnRemove) {
|
|
143
|
-
modified.push(
|
|
147
|
+
modified.push(...tmpUris);
|
|
144
148
|
}
|
|
145
|
-
operations.push(
|
|
149
|
+
operations.push((async () => {
|
|
150
|
+
const urls = await Promise.all(tmpUris.map((uri, index) => uriHandler(uri, index, mapper, getSystemLocale())));
|
|
151
|
+
record[field.name] = field.vectorProps ? urls : urls[0];
|
|
152
|
+
})());
|
|
146
153
|
}
|
|
147
154
|
else if (field.multiLocaleColumn) {
|
|
148
155
|
const targetField = this.modelMetadata.fields.find((f) => f.name === field.multiLocaleColumn);
|
|
149
156
|
if (targetField?.uriMapper && record[field.name]) {
|
|
157
|
+
const mapper = targetField.uriMapper;
|
|
150
158
|
//-- this field is locale for targetField, which has uri mapper
|
|
151
159
|
const localeUris = Object.keys(record[field.name]).map((lang) => [
|
|
152
160
|
lang,
|
|
153
|
-
|
|
161
|
+
targetField.vectorProps
|
|
162
|
+
? record[field.name][lang]
|
|
163
|
+
: [record[field.name][lang]],
|
|
154
164
|
]);
|
|
155
165
|
//-- for each pair or locale and tmp uri, invoke handle logic
|
|
156
166
|
for (const localeUri of localeUris) {
|
|
157
167
|
if (!targetField.mimeProps?.keepOnRemove) {
|
|
158
|
-
modified.push(localeUri[1]);
|
|
168
|
+
modified.push(...localeUri[1]);
|
|
159
169
|
}
|
|
160
|
-
operations.push(
|
|
170
|
+
operations.push((async () => {
|
|
171
|
+
const urls = await Promise.all(localeUri[1].map((uri, index) => uriHandler(uri, index, mapper, localeUri[0])));
|
|
172
|
+
record[field.name][localeUri[0]] = targetField.vectorProps
|
|
173
|
+
? urls
|
|
174
|
+
: urls[0];
|
|
175
|
+
})());
|
|
161
176
|
}
|
|
162
177
|
}
|
|
163
178
|
}
|
|
@@ -182,13 +197,18 @@ export class ModelRepository extends AbstractRepository {
|
|
|
182
197
|
for (const record of records) {
|
|
183
198
|
for (const field of this.modelMetadata.fields) {
|
|
184
199
|
if (field.uriMapper) {
|
|
185
|
-
|
|
200
|
+
const uri = record[field.name];
|
|
201
|
+
if (!uri) {
|
|
186
202
|
continue;
|
|
187
203
|
}
|
|
204
|
+
const uris = field.vectorProps ? uri : [uri];
|
|
188
205
|
mappingOperations.push((async () => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
206
|
+
const urls = await Promise.all(uris.map(async (uri) => {
|
|
207
|
+
return field.mimeProps?.public
|
|
208
|
+
? await fileUploadHandler.resolvePublicUrl(uri)
|
|
209
|
+
: await fileUploadHandler.resolvePrivateUrl(uri);
|
|
210
|
+
}));
|
|
211
|
+
record[field.name] = field.vectorProps ? urls : urls[0];
|
|
192
212
|
})());
|
|
193
213
|
}
|
|
194
214
|
else if (field.multiLocaleColumn) {
|
|
@@ -200,9 +220,16 @@ export class ModelRepository extends AbstractRepository {
|
|
|
200
220
|
}
|
|
201
221
|
for (const locale of Object.keys(localeObject)) {
|
|
202
222
|
mappingOperations.push((async () => {
|
|
203
|
-
localeObject[locale]
|
|
204
|
-
|
|
205
|
-
|
|
223
|
+
const uri = localeObject[locale];
|
|
224
|
+
if (!uri)
|
|
225
|
+
return;
|
|
226
|
+
const uris = targetField.vectorProps ? uri : [uri];
|
|
227
|
+
const urls = await Promise.all(uris.map(async (uri) => {
|
|
228
|
+
return targetField.mimeProps?.public
|
|
229
|
+
? await fileUploadHandler.resolvePublicUrl(uri)
|
|
230
|
+
: await fileUploadHandler.resolvePrivateUrl(uri);
|
|
231
|
+
}));
|
|
232
|
+
localeObject[locale] = targetField.vectorProps ? urls : urls[0];
|
|
206
233
|
})());
|
|
207
234
|
}
|
|
208
235
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clairejs/server",
|
|
3
|
-
"version": "3.19.
|
|
3
|
+
"version": "3.19.5",
|
|
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.10"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/cookie-parser": "^1.4.3",
|