@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,7 +1,8 @@
1
1
  ## Change Log
2
2
 
3
- #### 3.19.3:
3
+ #### 3.19.5:
4
4
 
5
+ - fix uri mapper with vector props
5
6
  - update claire orm and fix
6
7
  - fix isEndpoint
7
8
  - fix ModelRepository getMany
@@ -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, newUriCb) => {
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 tmpUri = record[field.name];
139
- if (!tmpUri) {
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(tmpUri);
147
+ modified.push(...tmpUris);
144
148
  }
145
- operations.push(uriHandler(tmpUri, field.uriMapper, getSystemLocale(), (newUri) => (record[field.name] = newUri)));
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
- record[field.name][lang],
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(uriHandler(localeUri[1], targetField.uriMapper, localeUri[0], (newUri) => (record[field.name][localeUri[0]] = newUri)));
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
- if (!record[field.name]) {
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
- record[field.name] = field.mimeProps?.public
190
- ? await fileUploadHandler.resolvePublicUrl(record[field.name])
191
- : await fileUploadHandler.resolvePrivateUrl(record[field.name]);
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] = targetField.mimeProps?.public
204
- ? await fileUploadHandler.resolvePublicUrl(localeObject[locale])
205
- : await fileUploadHandler.resolvePrivateUrl(localeObject[locale]);
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",
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.8"
38
+ "@clairejs/orm": "^3.15.10"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/cookie-parser": "^1.4.3",