@opra/core 0.25.4 → 0.25.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/cjs/{adapter/http → http}/request-handlers/entity-request-handler.js +12 -1
- package/cjs/{adapter/http → http}/request-handlers/request-handler-base.js +10 -0
- package/cjs/{adapter/http → http}/request-handlers/storage-request-handler.js +9 -3
- package/cjs/index.js +16 -16
- package/esm/{adapter/http → http}/request-handlers/entity-request-handler.js +12 -1
- package/esm/{adapter/http → http}/request-handlers/request-handler-base.js +10 -0
- package/esm/{adapter/http → http}/request-handlers/storage-request-handler.js +9 -3
- package/esm/index.js +16 -16
- package/package.json +2 -2
- package/types/augmentation/collection.augmentation.d.ts +8 -2
- package/types/augmentation/resource.augmentation.d.ts +1 -1
- package/types/augmentation/singleton.augmentation.d.ts +2 -2
- package/types/augmentation/storage.augmentation.d.ts +6 -3
- package/types/{adapter/endpoint-context.d.ts → endpoint-context.d.ts} +3 -3
- package/types/{adapter/execution-context.d.ts → execution-context.d.ts} +3 -3
- package/types/{adapter/execution-context.host.d.ts → execution-context.host.d.ts} +1 -1
- package/types/{adapter/http → http}/express-adapter.host.d.ts +1 -1
- package/types/{adapter/http → http}/http-adapter-base.d.ts +1 -1
- package/types/{adapter/http → http}/http-adapter.d.ts +1 -1
- package/types/{adapter/http → http}/http-adapter.host.d.ts +1 -1
- package/types/{adapter/http → http}/impl/http-outgoing-message.host.d.ts +1 -1
- package/types/{adapter/http → http}/request-handlers/request-handler-base.d.ts +5 -4
- package/types/{adapter/http → http}/request-handlers/storage-request-handler.d.ts +1 -1
- package/types/index.d.ts +16 -16
- package/types/{adapter/platform-adapter.host.d.ts → platform-adapter.host.d.ts} +1 -1
- package/types/{adapter/request.d.ts → request.d.ts} +1 -1
- package/types/{adapter/request.host.d.ts → request.host.d.ts} +3 -3
- package/types/{adapter/response.d.ts → response.d.ts} +1 -1
- package/types/{adapter/response.host.d.ts → response.host.d.ts} +2 -2
- /package/cjs/{adapter/endpoint-context.js → endpoint-context.js} +0 -0
- /package/cjs/{adapter/execution-context.host.js → execution-context.host.js} +0 -0
- /package/cjs/{adapter/execution-context.js → execution-context.js} +0 -0
- /package/cjs/{adapter/http → http}/express-adapter.host.js +0 -0
- /package/cjs/{adapter/http → http}/express-adapter.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/common.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/concat-readable.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/convert-to-headers.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/convert-to-raw-headers.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/match-known-fields.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/multipart-helper.js +0 -0
- /package/cjs/{adapter/http → http}/helpers/query-parsers.js +0 -0
- /package/cjs/{adapter/http → http}/http-adapter-base.js +0 -0
- /package/cjs/{adapter/http → http}/http-adapter.host.js +0 -0
- /package/cjs/{adapter/http → http}/http-adapter.js +0 -0
- /package/cjs/{adapter/http → http}/http-server-request.js +0 -0
- /package/cjs/{adapter/http → http}/http-server-response.js +0 -0
- /package/cjs/{adapter/http → http}/impl/http-incoming-message.host.js +0 -0
- /package/cjs/{adapter/http → http}/impl/http-outgoing-message.host.js +0 -0
- /package/cjs/{adapter/http → http}/request-handlers/parse-batch-request.js +0 -0
- /package/cjs/{adapter/interfaces → interfaces}/interceptor.interface.js +0 -0
- /package/cjs/{adapter/interfaces → interfaces}/logger.interface.js +0 -0
- /package/cjs/{adapter/interfaces → interfaces}/request-handler.interface.js +0 -0
- /package/cjs/{adapter/platform-adapter.host.js → platform-adapter.host.js} +0 -0
- /package/cjs/{adapter/platform-adapter.js → platform-adapter.js} +0 -0
- /package/cjs/{adapter/request.host.js → request.host.js} +0 -0
- /package/cjs/{adapter/request.js → request.js} +0 -0
- /package/cjs/{adapter/response.host.js → response.host.js} +0 -0
- /package/cjs/{adapter/response.js → response.js} +0 -0
- /package/cjs/{adapter/services → services}/logger.js +0 -0
- /package/esm/{adapter/endpoint-context.js → endpoint-context.js} +0 -0
- /package/esm/{adapter/execution-context.host.js → execution-context.host.js} +0 -0
- /package/esm/{adapter/execution-context.js → execution-context.js} +0 -0
- /package/esm/{adapter/http → http}/express-adapter.host.js +0 -0
- /package/esm/{adapter/http → http}/express-adapter.js +0 -0
- /package/esm/{adapter/http → http}/helpers/common.js +0 -0
- /package/esm/{adapter/http → http}/helpers/concat-readable.js +0 -0
- /package/esm/{adapter/http → http}/helpers/convert-to-headers.js +0 -0
- /package/esm/{adapter/http → http}/helpers/convert-to-raw-headers.js +0 -0
- /package/esm/{adapter/http → http}/helpers/match-known-fields.js +0 -0
- /package/esm/{adapter/http → http}/helpers/multipart-helper.js +0 -0
- /package/esm/{adapter/http → http}/helpers/query-parsers.js +0 -0
- /package/esm/{adapter/http → http}/http-adapter-base.js +0 -0
- /package/esm/{adapter/http → http}/http-adapter.host.js +0 -0
- /package/esm/{adapter/http → http}/http-adapter.js +0 -0
- /package/esm/{adapter/http → http}/http-server-request.js +0 -0
- /package/esm/{adapter/http → http}/http-server-response.js +0 -0
- /package/esm/{adapter/http → http}/impl/http-incoming-message.host.js +0 -0
- /package/esm/{adapter/http → http}/impl/http-outgoing-message.host.js +0 -0
- /package/esm/{adapter/http → http}/request-handlers/parse-batch-request.js +0 -0
- /package/esm/{adapter/interfaces → interfaces}/interceptor.interface.js +0 -0
- /package/esm/{adapter/interfaces → interfaces}/logger.interface.js +0 -0
- /package/esm/{adapter/interfaces → interfaces}/request-handler.interface.js +0 -0
- /package/esm/{adapter/platform-adapter.host.js → platform-adapter.host.js} +0 -0
- /package/esm/{adapter/platform-adapter.js → platform-adapter.js} +0 -0
- /package/esm/{adapter/request.host.js → request.host.js} +0 -0
- /package/esm/{adapter/request.js → request.js} +0 -0
- /package/esm/{adapter/response.host.js → response.host.js} +0 -0
- /package/esm/{adapter/response.js → response.js} +0 -0
- /package/esm/{adapter/services → services}/logger.js +0 -0
- /package/types/{adapter/http → http}/express-adapter.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/common.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/concat-readable.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/convert-to-headers.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/convert-to-raw-headers.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/match-known-fields.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/multipart-helper.d.ts +0 -0
- /package/types/{adapter/http → http}/helpers/query-parsers.d.ts +0 -0
- /package/types/{adapter/http → http}/http-server-request.d.ts +0 -0
- /package/types/{adapter/http → http}/http-server-response.d.ts +0 -0
- /package/types/{adapter/http → http}/impl/http-incoming-message.host.d.ts +0 -0
- /package/types/{adapter/http → http}/request-handlers/entity-request-handler.d.ts +0 -0
- /package/types/{adapter/http → http}/request-handlers/parse-batch-request.d.ts +0 -0
- /package/types/{adapter/interfaces → interfaces}/interceptor.interface.d.ts +0 -0
- /package/types/{adapter/interfaces → interfaces}/logger.interface.d.ts +0 -0
- /package/types/{adapter/interfaces → interfaces}/request-handler.interface.d.ts +0 -0
- /package/types/{adapter/platform-adapter.d.ts → platform-adapter.d.ts} +0 -0
- /package/types/{adapter/services → services}/logger.d.ts +0 -0
|
@@ -184,6 +184,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
184
184
|
endpoint: 'create',
|
|
185
185
|
data,
|
|
186
186
|
params: {
|
|
187
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
187
188
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
188
189
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
189
190
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -201,7 +202,8 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
201
202
|
contentId,
|
|
202
203
|
resource,
|
|
203
204
|
endpoint: 'delete',
|
|
204
|
-
key: resource.parseKeyValue(p.key)
|
|
205
|
+
key: resource.parseKeyValue(p.key),
|
|
206
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
205
207
|
});
|
|
206
208
|
}
|
|
207
209
|
const endpointMeta = await this.assertEndpoint(resource, 'deleteMany');
|
|
@@ -213,6 +215,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
213
215
|
resource,
|
|
214
216
|
endpoint: 'deleteMany',
|
|
215
217
|
params: {
|
|
218
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
216
219
|
filter
|
|
217
220
|
}
|
|
218
221
|
});
|
|
@@ -231,6 +234,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
231
234
|
endpoint: 'get',
|
|
232
235
|
key: resource.parseKeyValue(p.key),
|
|
233
236
|
params: {
|
|
237
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
234
238
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
235
239
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
236
240
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -247,6 +251,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
247
251
|
resource,
|
|
248
252
|
endpoint: 'findMany',
|
|
249
253
|
params: {
|
|
254
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
250
255
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
251
256
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
252
257
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -278,6 +283,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
278
283
|
key: resource.parseKeyValue(p.key),
|
|
279
284
|
data,
|
|
280
285
|
params: {
|
|
286
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
281
287
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
282
288
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
283
289
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -298,6 +304,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
298
304
|
endpoint: 'updateMany',
|
|
299
305
|
data,
|
|
300
306
|
params: {
|
|
307
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
301
308
|
filter,
|
|
302
309
|
}
|
|
303
310
|
});
|
|
@@ -331,6 +338,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
331
338
|
endpoint: 'create',
|
|
332
339
|
data,
|
|
333
340
|
params: {
|
|
341
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
334
342
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
335
343
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
336
344
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -345,6 +353,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
345
353
|
contentId,
|
|
346
354
|
resource,
|
|
347
355
|
endpoint: 'delete',
|
|
356
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
348
357
|
});
|
|
349
358
|
}
|
|
350
359
|
case 'GET': {
|
|
@@ -359,6 +368,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
359
368
|
resource,
|
|
360
369
|
endpoint: 'get',
|
|
361
370
|
params: {
|
|
371
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
362
372
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
363
373
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
364
374
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -382,6 +392,7 @@ class EntityRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
382
392
|
endpoint: 'update',
|
|
383
393
|
data,
|
|
384
394
|
params: {
|
|
395
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
385
396
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
386
397
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
387
398
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -23,5 +23,15 @@ class RequestHandlerBase {
|
|
|
23
23
|
code: 'RESOLVER_FORBIDDEN'
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
parseParameters(parsedUrl, metadata) {
|
|
27
|
+
if (!metadata.parameters)
|
|
28
|
+
return;
|
|
29
|
+
const searchParams = parsedUrl.searchParams;
|
|
30
|
+
const out = {};
|
|
31
|
+
for (const [k] of Object.entries(metadata.parameters)) {
|
|
32
|
+
out[k] = searchParams.get(k);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
26
36
|
}
|
|
27
37
|
exports.RequestHandlerBase = RequestHandlerBase;
|
|
@@ -49,7 +49,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
49
49
|
http: incoming,
|
|
50
50
|
resource,
|
|
51
51
|
endpoint: 'get',
|
|
52
|
-
contentId
|
|
52
|
+
contentId,
|
|
53
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
54
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
case 'DELETE': {
|
|
@@ -59,7 +61,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
59
61
|
http: incoming,
|
|
60
62
|
resource,
|
|
61
63
|
endpoint: 'delete',
|
|
62
|
-
contentId
|
|
64
|
+
contentId,
|
|
65
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
66
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
63
67
|
});
|
|
64
68
|
}
|
|
65
69
|
case 'POST': {
|
|
@@ -82,7 +86,9 @@ class StorageRequestHandler extends request_handler_base_js_1.RequestHandlerBase
|
|
|
82
86
|
resource,
|
|
83
87
|
endpoint: 'post',
|
|
84
88
|
contentId,
|
|
85
|
-
parts: multipartIterator
|
|
89
|
+
parts: multipartIterator,
|
|
90
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
91
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
86
92
|
});
|
|
87
93
|
}
|
|
88
94
|
}
|
package/cjs/index.js
CHANGED
|
@@ -7,19 +7,19 @@ require("./augmentation/collection.augmentation.js");
|
|
|
7
7
|
require("./augmentation/singleton.augmentation.js");
|
|
8
8
|
require("./augmentation/storage.augmentation.js");
|
|
9
9
|
tslib_1.__exportStar(require("./types.js"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./
|
|
11
|
-
tslib_1.__exportStar(require("./
|
|
12
|
-
tslib_1.__exportStar(require("./
|
|
13
|
-
tslib_1.__exportStar(require("./
|
|
14
|
-
tslib_1.__exportStar(require("./
|
|
15
|
-
tslib_1.__exportStar(require("./
|
|
16
|
-
tslib_1.__exportStar(require("./
|
|
17
|
-
tslib_1.__exportStar(require("./
|
|
18
|
-
tslib_1.__exportStar(require("./
|
|
19
|
-
tslib_1.__exportStar(require("./
|
|
20
|
-
tslib_1.__exportStar(require("./
|
|
21
|
-
tslib_1.__exportStar(require("./
|
|
22
|
-
tslib_1.__exportStar(require("./
|
|
23
|
-
tslib_1.__exportStar(require("./
|
|
24
|
-
tslib_1.__exportStar(require("./
|
|
25
|
-
tslib_1.__exportStar(require("./
|
|
10
|
+
tslib_1.__exportStar(require("./execution-context.js"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./endpoint-context.js"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./platform-adapter.js"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./request.js"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./response.js"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./http/express-adapter.js"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./http/http-adapter.js"), exports);
|
|
17
|
+
tslib_1.__exportStar(require("./http/impl/http-incoming-message.host.js"), exports);
|
|
18
|
+
tslib_1.__exportStar(require("./http/impl/http-outgoing-message.host.js"), exports);
|
|
19
|
+
tslib_1.__exportStar(require("./http/http-server-request.js"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./http/http-server-response.js"), exports);
|
|
21
|
+
tslib_1.__exportStar(require("./http/helpers/multipart-helper.js"), exports);
|
|
22
|
+
tslib_1.__exportStar(require("./interfaces/interceptor.interface.js"), exports);
|
|
23
|
+
tslib_1.__exportStar(require("./interfaces/logger.interface.js"), exports);
|
|
24
|
+
tslib_1.__exportStar(require("./interfaces/request-handler.interface.js"), exports);
|
|
25
|
+
tslib_1.__exportStar(require("./services/logger.js"), exports);
|
|
@@ -180,6 +180,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
180
180
|
endpoint: 'create',
|
|
181
181
|
data,
|
|
182
182
|
params: {
|
|
183
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
183
184
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
184
185
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
185
186
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -197,7 +198,8 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
197
198
|
contentId,
|
|
198
199
|
resource,
|
|
199
200
|
endpoint: 'delete',
|
|
200
|
-
key: resource.parseKeyValue(p.key)
|
|
201
|
+
key: resource.parseKeyValue(p.key),
|
|
202
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
201
203
|
});
|
|
202
204
|
}
|
|
203
205
|
const endpointMeta = await this.assertEndpoint(resource, 'deleteMany');
|
|
@@ -209,6 +211,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
209
211
|
resource,
|
|
210
212
|
endpoint: 'deleteMany',
|
|
211
213
|
params: {
|
|
214
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
212
215
|
filter
|
|
213
216
|
}
|
|
214
217
|
});
|
|
@@ -227,6 +230,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
227
230
|
endpoint: 'get',
|
|
228
231
|
key: resource.parseKeyValue(p.key),
|
|
229
232
|
params: {
|
|
233
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
230
234
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
231
235
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
232
236
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -243,6 +247,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
243
247
|
resource,
|
|
244
248
|
endpoint: 'findMany',
|
|
245
249
|
params: {
|
|
250
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
246
251
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
247
252
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
248
253
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -274,6 +279,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
274
279
|
key: resource.parseKeyValue(p.key),
|
|
275
280
|
data,
|
|
276
281
|
params: {
|
|
282
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
277
283
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
278
284
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
279
285
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -294,6 +300,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
294
300
|
endpoint: 'updateMany',
|
|
295
301
|
data,
|
|
296
302
|
params: {
|
|
303
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
297
304
|
filter,
|
|
298
305
|
}
|
|
299
306
|
});
|
|
@@ -327,6 +334,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
327
334
|
endpoint: 'create',
|
|
328
335
|
data,
|
|
329
336
|
params: {
|
|
337
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
330
338
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
331
339
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
332
340
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -341,6 +349,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
341
349
|
contentId,
|
|
342
350
|
resource,
|
|
343
351
|
endpoint: 'delete',
|
|
352
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
344
353
|
});
|
|
345
354
|
}
|
|
346
355
|
case 'GET': {
|
|
@@ -355,6 +364,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
355
364
|
resource,
|
|
356
365
|
endpoint: 'get',
|
|
357
366
|
params: {
|
|
367
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
358
368
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
359
369
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
360
370
|
include: include && resource.normalizeFieldPath(include)
|
|
@@ -378,6 +388,7 @@ export class EntityRequestHandler extends RequestHandlerBase {
|
|
|
378
388
|
endpoint: 'update',
|
|
379
389
|
data,
|
|
380
390
|
params: {
|
|
391
|
+
...this.parseParameters(incoming.parsedUrl, endpointMeta),
|
|
381
392
|
pick: pick && resource.normalizeFieldPath(pick),
|
|
382
393
|
omit: omit && resource.normalizeFieldPath(omit),
|
|
383
394
|
include: include && resource.normalizeFieldPath(include),
|
|
@@ -20,4 +20,14 @@ export class RequestHandlerBase {
|
|
|
20
20
|
code: 'RESOLVER_FORBIDDEN'
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
+
parseParameters(parsedUrl, metadata) {
|
|
24
|
+
if (!metadata.parameters)
|
|
25
|
+
return;
|
|
26
|
+
const searchParams = parsedUrl.searchParams;
|
|
27
|
+
const out = {};
|
|
28
|
+
for (const [k] of Object.entries(metadata.parameters)) {
|
|
29
|
+
out[k] = searchParams.get(k);
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
23
33
|
}
|
|
@@ -45,7 +45,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
|
|
|
45
45
|
http: incoming,
|
|
46
46
|
resource,
|
|
47
47
|
endpoint: 'get',
|
|
48
|
-
contentId
|
|
48
|
+
contentId,
|
|
49
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
50
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
case 'DELETE': {
|
|
@@ -55,7 +57,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
|
|
|
55
57
|
http: incoming,
|
|
56
58
|
resource,
|
|
57
59
|
endpoint: 'delete',
|
|
58
|
-
contentId
|
|
60
|
+
contentId,
|
|
61
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
62
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
59
63
|
});
|
|
60
64
|
}
|
|
61
65
|
case 'POST': {
|
|
@@ -78,7 +82,9 @@ export class StorageRequestHandler extends RequestHandlerBase {
|
|
|
78
82
|
resource,
|
|
79
83
|
endpoint: 'post',
|
|
80
84
|
contentId,
|
|
81
|
-
parts: multipartIterator
|
|
85
|
+
parts: multipartIterator,
|
|
86
|
+
path: incoming.parsedUrl.path.slice(1).toString().substring(1),
|
|
87
|
+
params: this.parseParameters(incoming.parsedUrl, endpointMeta)
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
}
|
package/esm/index.js
CHANGED
|
@@ -4,19 +4,19 @@ import './augmentation/collection.augmentation.js';
|
|
|
4
4
|
import './augmentation/singleton.augmentation.js';
|
|
5
5
|
import './augmentation/storage.augmentation.js';
|
|
6
6
|
export * from './types.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './
|
|
17
|
-
export * from './
|
|
18
|
-
export * from './
|
|
19
|
-
export * from './
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './
|
|
22
|
-
export * from './
|
|
7
|
+
export * from './execution-context.js';
|
|
8
|
+
export * from './endpoint-context.js';
|
|
9
|
+
export * from './platform-adapter.js';
|
|
10
|
+
export * from './request.js';
|
|
11
|
+
export * from './response.js';
|
|
12
|
+
export * from './http/express-adapter.js';
|
|
13
|
+
export * from './http/http-adapter.js';
|
|
14
|
+
export * from './http/impl/http-incoming-message.host.js';
|
|
15
|
+
export * from './http/impl/http-outgoing-message.host.js';
|
|
16
|
+
export * from './http/http-server-request.js';
|
|
17
|
+
export * from './http/http-server-response.js';
|
|
18
|
+
export * from './http/helpers/multipart-helper.js';
|
|
19
|
+
export * from './interfaces/interceptor.interface.js';
|
|
20
|
+
export * from './interfaces/logger.interface.js';
|
|
21
|
+
export * from './interfaces/request-handler.interface.js';
|
|
22
|
+
export * from './services/logger.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opra/core",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.5",
|
|
4
4
|
"description": "Opra schema package",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"clean:cover": "rimraf ../../coverage/core"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@opra/common": "^0.25.
|
|
30
|
+
"@opra/common": "^0.25.5",
|
|
31
31
|
"accepts": "^1.3.8",
|
|
32
32
|
"content-disposition": "^0.5.4",
|
|
33
33
|
"content-type": "^1.0.5",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PartialOutput } from '@opra/common';
|
|
2
|
-
import type { EndpointContext } from '../
|
|
3
|
-
import type { Request as _Request } from '../
|
|
2
|
+
import type { EndpointContext } from '../endpoint-context.js';
|
|
3
|
+
import type { Request as _Request } from '../request.js';
|
|
4
4
|
declare module "@opra/common" {
|
|
5
5
|
namespace Collection {
|
|
6
6
|
namespace Action {
|
|
@@ -16,6 +16,7 @@ declare module "@opra/common" {
|
|
|
16
16
|
pick?: string[];
|
|
17
17
|
omit?: string[];
|
|
18
18
|
include?: string[];
|
|
19
|
+
[key: string]: any;
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -36,6 +37,7 @@ declare module "@opra/common" {
|
|
|
36
37
|
endpoint: 'deleteMany';
|
|
37
38
|
params: {
|
|
38
39
|
filter?: any;
|
|
40
|
+
[key: string]: any;
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -55,6 +57,7 @@ declare module "@opra/common" {
|
|
|
55
57
|
skip?: number;
|
|
56
58
|
distinct?: boolean;
|
|
57
59
|
count?: boolean;
|
|
60
|
+
[key: string]: any;
|
|
58
61
|
};
|
|
59
62
|
}
|
|
60
63
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -69,6 +72,7 @@ declare module "@opra/common" {
|
|
|
69
72
|
pick?: string[];
|
|
70
73
|
omit?: string[];
|
|
71
74
|
include?: string[];
|
|
75
|
+
[key: string]: any;
|
|
72
76
|
};
|
|
73
77
|
}
|
|
74
78
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -84,6 +88,7 @@ declare module "@opra/common" {
|
|
|
84
88
|
pick?: string[];
|
|
85
89
|
omit?: string[];
|
|
86
90
|
include?: string[];
|
|
91
|
+
[key: string]: any;
|
|
87
92
|
};
|
|
88
93
|
}
|
|
89
94
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -96,6 +101,7 @@ declare module "@opra/common" {
|
|
|
96
101
|
data: any;
|
|
97
102
|
params: {
|
|
98
103
|
filter?: any;
|
|
104
|
+
[key: string]: any;
|
|
99
105
|
};
|
|
100
106
|
}
|
|
101
107
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PartialOutput } from '@opra/common';
|
|
2
|
-
import type { EndpointContext } from '../
|
|
3
|
-
import type { Request as _Request } from '../
|
|
2
|
+
import type { EndpointContext } from '../endpoint-context.js';
|
|
3
|
+
import type { Request as _Request } from '../request.js';
|
|
4
4
|
declare module "@opra/common" {
|
|
5
5
|
namespace Singleton {
|
|
6
6
|
namespace Action {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import type { Readable } from 'stream';
|
|
4
|
-
import type { EndpointContext } from '../
|
|
5
|
-
import type { MultipartIterator } from '../
|
|
6
|
-
import type { Request as _Request } from '../
|
|
4
|
+
import type { EndpointContext } from '../endpoint-context.js';
|
|
5
|
+
import type { MultipartIterator } from '../http/helpers/multipart-helper';
|
|
6
|
+
import type { Request as _Request } from '../request.js';
|
|
7
7
|
declare module "@opra/common" {
|
|
8
8
|
namespace Storage {
|
|
9
9
|
namespace Action {
|
|
@@ -12,6 +12,7 @@ declare module "@opra/common" {
|
|
|
12
12
|
}
|
|
13
13
|
namespace Delete {
|
|
14
14
|
interface Request extends _Request {
|
|
15
|
+
path?: string;
|
|
15
16
|
}
|
|
16
17
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
17
18
|
request: Request;
|
|
@@ -19,6 +20,7 @@ declare module "@opra/common" {
|
|
|
19
20
|
}
|
|
20
21
|
namespace Get {
|
|
21
22
|
interface Request extends _Request {
|
|
23
|
+
path?: string;
|
|
22
24
|
}
|
|
23
25
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
24
26
|
request: Request;
|
|
@@ -26,6 +28,7 @@ declare module "@opra/common" {
|
|
|
26
28
|
}
|
|
27
29
|
namespace Post {
|
|
28
30
|
interface Request extends _Request {
|
|
31
|
+
path?: string;
|
|
29
32
|
parts: MultipartIterator;
|
|
30
33
|
}
|
|
31
34
|
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ExecutionContext } from './execution-context';
|
|
2
|
-
import type { Request } from './request';
|
|
3
|
-
import type { Response } from './response';
|
|
1
|
+
import type { ExecutionContext } from './execution-context.js';
|
|
2
|
+
import type { Request } from './request.js';
|
|
3
|
+
import type { Response } from './response.js';
|
|
4
4
|
export interface EndpointContext<TSession extends {} = {}> extends ExecutionContext<TSession> {
|
|
5
5
|
request: Request;
|
|
6
6
|
response: Response;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { HttpServerRequest } from './http/http-server-request';
|
|
2
|
-
import type { HttpServerResponse } from './http/http-server-response';
|
|
3
|
-
import type { Protocol } from './platform-adapter';
|
|
1
|
+
import type { HttpServerRequest } from './http/http-server-request.js';
|
|
2
|
+
import type { HttpServerResponse } from './http/http-server-response.js';
|
|
3
|
+
import type { Protocol } from './platform-adapter.js';
|
|
4
4
|
export interface ExecutionContext<TSession extends {} = {}> {
|
|
5
5
|
readonly protocol: Protocol;
|
|
6
6
|
readonly platform: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AsyncEventEmitter } from 'strict-typed-events';
|
|
2
2
|
import type { ApiDocument } from '@opra/common';
|
|
3
|
-
import type { HttpServerResponse } from './/http/http-server-response.js';
|
|
4
3
|
import type { ExecutionContext, HttpMessageContext, RpcMessageContext, WsMessageContext } from './execution-context.js';
|
|
5
4
|
import type { HttpServerRequest } from './http/http-server-request.js';
|
|
5
|
+
import type { HttpServerResponse } from './http/http-server-response.js';
|
|
6
6
|
import { Protocol } from './platform-adapter.js';
|
|
7
7
|
export declare class ExecutionContextHost<TSession extends {} = {}> extends AsyncEventEmitter implements ExecutionContext<TSession> {
|
|
8
8
|
readonly api: ApiDocument;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Application } from 'express';
|
|
2
2
|
import { ApiDocument } from '@opra/common';
|
|
3
|
-
import type { ExpressAdapter } from './express-adapter';
|
|
3
|
+
import type { ExpressAdapter } from './express-adapter.js';
|
|
4
4
|
import { HttpAdapterBase } from './http-adapter-base.js';
|
|
5
5
|
export declare class ExpressAdapterHost extends HttpAdapterBase implements ExpressAdapter {
|
|
6
6
|
_platform: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExecutionContext } from '../execution-context.js';
|
|
2
2
|
import { RequestHandler } from '../interfaces/request-handler.interface.js';
|
|
3
|
-
import type { Protocol } from '../platform-adapter';
|
|
4
3
|
import { PlatformAdapterHost } from '../platform-adapter.host.js';
|
|
4
|
+
import type { Protocol } from '../platform-adapter.js';
|
|
5
5
|
import { HttpServerRequest } from './http-server-request.js';
|
|
6
6
|
import { HttpServerResponse } from './http-server-response.js';
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import http from 'http';
|
|
3
3
|
import type { ApiDocument, OpraURLPath } from '@opra/common';
|
|
4
|
-
import type { PlatformAdapter } from '../platform-adapter';
|
|
4
|
+
import type { PlatformAdapter } from '../platform-adapter.js';
|
|
5
5
|
export interface HttpAdapter extends PlatformAdapter {
|
|
6
6
|
readonly basePath: OpraURLPath;
|
|
7
7
|
readonly server: http.Server;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import http from 'http';
|
|
3
3
|
import { ApiDocument, OpraURLPath } from '@opra/common';
|
|
4
|
-
import type { HttpAdapter } from './http-adapter';
|
|
4
|
+
import type { HttpAdapter } from './http-adapter.js';
|
|
5
5
|
import { HttpAdapterBase } from './http-adapter-base.js';
|
|
6
6
|
/**
|
|
7
7
|
* @class HttpAdapterHost
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
import http, { OutgoingHttpHeaders } from 'http';
|
|
5
5
|
import { Duplex, Writable } from 'stream';
|
|
6
|
-
import type { HttpIncomingMessage } from './http-incoming-message.host';
|
|
6
|
+
import type { HttpIncomingMessage } from './http-incoming-message.host.js';
|
|
7
7
|
export declare const kOutHeaders: unique symbol;
|
|
8
8
|
export declare const kOutTrailers: unique symbol;
|
|
9
9
|
declare global {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { OpraSchema, Resource } from '@opra/common';
|
|
2
|
-
import type { ExecutionContext } from '../../execution-context';
|
|
3
|
-
import type { RequestHandler } from '../../interfaces/request-handler.interface';
|
|
4
|
-
import type { HttpAdapterBase } from '../http-adapter-base';
|
|
1
|
+
import { OpraSchema, OpraURL, Resource } from '@opra/common';
|
|
2
|
+
import type { ExecutionContext } from '../../execution-context.js';
|
|
3
|
+
import type { RequestHandler } from '../../interfaces/request-handler.interface.js';
|
|
4
|
+
import type { HttpAdapterBase } from '../http-adapter-base.js';
|
|
5
5
|
/**
|
|
6
6
|
* @class RequestHandlerBase
|
|
7
7
|
*/
|
|
@@ -12,4 +12,5 @@ export declare abstract class RequestHandlerBase implements RequestHandler {
|
|
|
12
12
|
assertEndpoint<T extends OpraSchema.Endpoint = OpraSchema.Endpoint>(resource: Resource, endpoint: string): Promise<T & {
|
|
13
13
|
controller: any;
|
|
14
14
|
}>;
|
|
15
|
+
protected parseParameters(parsedUrl: OpraURL, metadata: OpraSchema.Endpoint): any;
|
|
15
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EndpointContext } from '../../endpoint-context.js';
|
|
2
|
-
import type { ExecutionContext } from '../../execution-context';
|
|
2
|
+
import type { ExecutionContext } from '../../execution-context.js';
|
|
3
3
|
import { Request } from '../../request.js';
|
|
4
4
|
import type { HttpAdapterBase } from '../http-adapter-base.js';
|
|
5
5
|
import { HttpServerRequest } from '../http-server-request.js';
|
package/types/index.d.ts
CHANGED
|
@@ -4,19 +4,19 @@ import './augmentation/collection.augmentation.js';
|
|
|
4
4
|
import './augmentation/singleton.augmentation.js';
|
|
5
5
|
import './augmentation/storage.augmentation.js';
|
|
6
6
|
export * from './types.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './
|
|
15
|
-
export * from './
|
|
16
|
-
export * from './
|
|
17
|
-
export * from './
|
|
18
|
-
export * from './
|
|
19
|
-
export * from './
|
|
20
|
-
export * from './
|
|
21
|
-
export * from './
|
|
22
|
-
export * from './
|
|
7
|
+
export * from './execution-context.js';
|
|
8
|
+
export * from './endpoint-context.js';
|
|
9
|
+
export * from './platform-adapter.js';
|
|
10
|
+
export * from './request.js';
|
|
11
|
+
export * from './response.js';
|
|
12
|
+
export * from './http/express-adapter.js';
|
|
13
|
+
export * from './http/http-adapter.js';
|
|
14
|
+
export * from './http/impl/http-incoming-message.host.js';
|
|
15
|
+
export * from './http/impl/http-outgoing-message.host.js';
|
|
16
|
+
export * from './http/http-server-request.js';
|
|
17
|
+
export * from './http/http-server-response.js';
|
|
18
|
+
export * from './http/helpers/multipart-helper.js';
|
|
19
|
+
export * from './interfaces/interceptor.interface.js';
|
|
20
|
+
export * from './interfaces/logger.interface.js';
|
|
21
|
+
export * from './interfaces/request-handler.interface.js';
|
|
22
|
+
export * from './services/logger.js';
|
|
@@ -2,7 +2,7 @@ import { AsyncEventEmitter } from 'strict-typed-events';
|
|
|
2
2
|
import { ApiDocument, I18n, Resource } from '@opra/common';
|
|
3
3
|
import { ExecutionContext } from './execution-context.js';
|
|
4
4
|
import { Interceptor } from './interfaces/interceptor.interface.js';
|
|
5
|
-
import type { PlatformAdapter, Protocol } from './platform-adapter';
|
|
5
|
+
import type { PlatformAdapter, Protocol } from './platform-adapter.js';
|
|
6
6
|
import { Logger } from './services/logger.js';
|
|
7
7
|
/**
|
|
8
8
|
* @class PlatformAdapterHost
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { StrictOmit } from 'ts-gems';
|
|
1
|
+
import type { PartialSome, StrictOmit } from 'ts-gems';
|
|
2
2
|
import type { HttpServerRequest } from './http/http-server-request.js';
|
|
3
|
-
import type { Request } from './request';
|
|
3
|
+
import type { Request } from './request.js';
|
|
4
4
|
export declare namespace RequestHost {
|
|
5
|
-
interface Initiator extends StrictOmit<Request, 'switchToHttp' | 'switchToWs' | 'switchToRpc'> {
|
|
5
|
+
interface Initiator extends PartialSome<StrictOmit<Request, 'switchToHttp' | 'switchToWs' | 'switchToRpc'>, 'params'> {
|
|
6
6
|
controller: any;
|
|
7
7
|
http?: HttpServerRequest;
|
|
8
8
|
[key: string]: any;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { HttpServerResponse } from './http/http-server-response';
|
|
2
|
-
import type { Response } from './response';
|
|
1
|
+
import type { HttpServerResponse } from './http/http-server-response.js';
|
|
2
|
+
import type { Response } from './response.js';
|
|
3
3
|
export declare namespace ResponseHost {
|
|
4
4
|
interface Initiator {
|
|
5
5
|
value?: any;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|