@feathersjs/schema 5.0.0-pre.35 → 5.0.0-pre.37
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/CHANGELOG.md +17 -0
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/lib/default-schemas.d.ts +297 -9
- package/lib/default-schemas.js +22 -1
- package/lib/default-schemas.js.map +1 -1
- package/lib/hooks/resolve.d.ts +18 -7
- package/lib/hooks/resolve.js +69 -55
- package/lib/hooks/resolve.js.map +1 -1
- package/lib/json-schema.d.ts +17 -0
- package/lib/json-schema.js +21 -8
- package/lib/json-schema.js.map +1 -1
- package/package.json +9 -9
- package/src/default-schemas.ts +22 -1
- package/src/hooks/resolve.ts +85 -67
- package/src/json-schema.ts +21 -8
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.0.0-pre.37](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.36...v5.0.0-pre.37) (2023-02-09)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **schema:** Do not change the hook context in resolvers ([#3048](https://github.com/feathersjs/feathers/issues/3048)) ([bfd8c04](https://github.com/feathersjs/feathers/commit/bfd8c04c15279063a0d4b70771715c656dda5f7c))
|
|
11
|
+
- **schema:** Ensure that resolveResult and resolveExternal are run as around hooks ([#3032](https://github.com/feathersjs/feathers/issues/3032)) ([71942f4](https://github.com/feathersjs/feathers/commit/71942f418e3afe167aef4f98b1a97356dae7625c))
|
|
12
|
+
|
|
13
|
+
# [5.0.0-pre.36](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.35...v5.0.0-pre.36) (2023-01-29)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **configuration:** Add pool and connection object to SQL database default configuration ([#3023](https://github.com/feathersjs/feathers/issues/3023)) ([092c749](https://github.com/feathersjs/feathers/commit/092c749d43f7da4d019576d1210fe7d3719a44a2))
|
|
18
|
+
- **databases:** Ensure that query sanitization is not necessary when using query schemas ([#3022](https://github.com/feathersjs/feathers/issues/3022)) ([dbf514e](https://github.com/feathersjs/feathers/commit/dbf514e85d1508b95c007462a39b3cadd4ff391d))
|
|
19
|
+
- **schema:** Allow any type in resolver hooks ([#3006](https://github.com/feathersjs/feathers/issues/3006)) ([f01281f](https://github.com/feathersjs/feathers/commit/f01281f7d83262738459585fc3f53f56c0a0deb8))
|
|
20
|
+
- **schema:** Ensure all types of nested data are securely dispatched ([#3005](https://github.com/feathersjs/feathers/issues/3005)) ([e4a9da5](https://github.com/feathersjs/feathers/commit/e4a9da5f3288e8e9f02087754473c7a9dfda6cb1))
|
|
21
|
+
- Update all dependencies ([#3024](https://github.com/feathersjs/feathers/issues/3024)) ([283dc47](https://github.com/feathersjs/feathers/commit/283dc4798d85584bc031e6e54b83b4ea77d1edd0))
|
|
22
|
+
|
|
6
23
|
# [5.0.0-pre.35](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.34...v5.0.0-pre.35) (2023-01-12)
|
|
7
24
|
|
|
8
25
|
### Features
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -18,6 +18,6 @@ Refer to the [Feathers documentation](https://docs.feathersjs.com) for more deta
|
|
|
18
18
|
|
|
19
19
|
## License
|
|
20
20
|
|
|
21
|
-
Copyright (c)
|
|
21
|
+
Copyright (c) 2023 [Feathers contributors](https://github.com/feathersjs/feathers/graphs/contributors)
|
|
22
22
|
|
|
23
23
|
Licensed under the [MIT license](LICENSE).
|
package/lib/default-schemas.d.ts
CHANGED
|
@@ -122,8 +122,40 @@ export declare const sqlSettingsSchema: {
|
|
|
122
122
|
readonly client: {
|
|
123
123
|
readonly type: "string";
|
|
124
124
|
};
|
|
125
|
+
readonly pool: {
|
|
126
|
+
readonly type: "object";
|
|
127
|
+
readonly properties: {
|
|
128
|
+
readonly min: {
|
|
129
|
+
readonly type: "number";
|
|
130
|
+
};
|
|
131
|
+
readonly max: {
|
|
132
|
+
readonly type: "number";
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
};
|
|
125
136
|
readonly connection: {
|
|
126
|
-
readonly
|
|
137
|
+
readonly oneOf: readonly [{
|
|
138
|
+
readonly type: "string";
|
|
139
|
+
}, {
|
|
140
|
+
readonly type: "object";
|
|
141
|
+
readonly properties: {
|
|
142
|
+
readonly host: {
|
|
143
|
+
readonly type: "string";
|
|
144
|
+
};
|
|
145
|
+
readonly port: {
|
|
146
|
+
readonly type: "number";
|
|
147
|
+
};
|
|
148
|
+
readonly user: {
|
|
149
|
+
readonly type: "string";
|
|
150
|
+
};
|
|
151
|
+
readonly password: {
|
|
152
|
+
readonly type: "string";
|
|
153
|
+
};
|
|
154
|
+
readonly database: {
|
|
155
|
+
readonly type: "string";
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
}];
|
|
127
159
|
};
|
|
128
160
|
};
|
|
129
161
|
};
|
|
@@ -275,8 +307,40 @@ export declare const defaultAppSettings: {
|
|
|
275
307
|
readonly client: {
|
|
276
308
|
readonly type: "string";
|
|
277
309
|
};
|
|
310
|
+
readonly pool: {
|
|
311
|
+
readonly type: "object";
|
|
312
|
+
readonly properties: {
|
|
313
|
+
readonly min: {
|
|
314
|
+
readonly type: "number";
|
|
315
|
+
};
|
|
316
|
+
readonly max: {
|
|
317
|
+
readonly type: "number";
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
};
|
|
278
321
|
readonly connection: {
|
|
279
|
-
readonly
|
|
322
|
+
readonly oneOf: readonly [{
|
|
323
|
+
readonly type: "string";
|
|
324
|
+
}, {
|
|
325
|
+
readonly type: "object";
|
|
326
|
+
readonly properties: {
|
|
327
|
+
readonly host: {
|
|
328
|
+
readonly type: "string";
|
|
329
|
+
};
|
|
330
|
+
readonly port: {
|
|
331
|
+
readonly type: "number";
|
|
332
|
+
};
|
|
333
|
+
readonly user: {
|
|
334
|
+
readonly type: "string";
|
|
335
|
+
};
|
|
336
|
+
readonly password: {
|
|
337
|
+
readonly type: "string";
|
|
338
|
+
};
|
|
339
|
+
readonly database: {
|
|
340
|
+
readonly type: "string";
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
}];
|
|
280
344
|
};
|
|
281
345
|
};
|
|
282
346
|
};
|
|
@@ -286,8 +350,40 @@ export declare const defaultAppSettings: {
|
|
|
286
350
|
readonly client: {
|
|
287
351
|
readonly type: "string";
|
|
288
352
|
};
|
|
353
|
+
readonly pool: {
|
|
354
|
+
readonly type: "object";
|
|
355
|
+
readonly properties: {
|
|
356
|
+
readonly min: {
|
|
357
|
+
readonly type: "number";
|
|
358
|
+
};
|
|
359
|
+
readonly max: {
|
|
360
|
+
readonly type: "number";
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
};
|
|
289
364
|
readonly connection: {
|
|
290
|
-
readonly
|
|
365
|
+
readonly oneOf: readonly [{
|
|
366
|
+
readonly type: "string";
|
|
367
|
+
}, {
|
|
368
|
+
readonly type: "object";
|
|
369
|
+
readonly properties: {
|
|
370
|
+
readonly host: {
|
|
371
|
+
readonly type: "string";
|
|
372
|
+
};
|
|
373
|
+
readonly port: {
|
|
374
|
+
readonly type: "number";
|
|
375
|
+
};
|
|
376
|
+
readonly user: {
|
|
377
|
+
readonly type: "string";
|
|
378
|
+
};
|
|
379
|
+
readonly password: {
|
|
380
|
+
readonly type: "string";
|
|
381
|
+
};
|
|
382
|
+
readonly database: {
|
|
383
|
+
readonly type: "string";
|
|
384
|
+
};
|
|
385
|
+
};
|
|
386
|
+
}];
|
|
291
387
|
};
|
|
292
388
|
};
|
|
293
389
|
};
|
|
@@ -297,8 +393,40 @@ export declare const defaultAppSettings: {
|
|
|
297
393
|
readonly client: {
|
|
298
394
|
readonly type: "string";
|
|
299
395
|
};
|
|
396
|
+
readonly pool: {
|
|
397
|
+
readonly type: "object";
|
|
398
|
+
readonly properties: {
|
|
399
|
+
readonly min: {
|
|
400
|
+
readonly type: "number";
|
|
401
|
+
};
|
|
402
|
+
readonly max: {
|
|
403
|
+
readonly type: "number";
|
|
404
|
+
};
|
|
405
|
+
};
|
|
406
|
+
};
|
|
300
407
|
readonly connection: {
|
|
301
|
-
readonly
|
|
408
|
+
readonly oneOf: readonly [{
|
|
409
|
+
readonly type: "string";
|
|
410
|
+
}, {
|
|
411
|
+
readonly type: "object";
|
|
412
|
+
readonly properties: {
|
|
413
|
+
readonly host: {
|
|
414
|
+
readonly type: "string";
|
|
415
|
+
};
|
|
416
|
+
readonly port: {
|
|
417
|
+
readonly type: "number";
|
|
418
|
+
};
|
|
419
|
+
readonly user: {
|
|
420
|
+
readonly type: "string";
|
|
421
|
+
};
|
|
422
|
+
readonly password: {
|
|
423
|
+
readonly type: "string";
|
|
424
|
+
};
|
|
425
|
+
readonly database: {
|
|
426
|
+
readonly type: "string";
|
|
427
|
+
};
|
|
428
|
+
};
|
|
429
|
+
}];
|
|
302
430
|
};
|
|
303
431
|
};
|
|
304
432
|
};
|
|
@@ -308,8 +436,40 @@ export declare const defaultAppSettings: {
|
|
|
308
436
|
readonly client: {
|
|
309
437
|
readonly type: "string";
|
|
310
438
|
};
|
|
439
|
+
readonly pool: {
|
|
440
|
+
readonly type: "object";
|
|
441
|
+
readonly properties: {
|
|
442
|
+
readonly min: {
|
|
443
|
+
readonly type: "number";
|
|
444
|
+
};
|
|
445
|
+
readonly max: {
|
|
446
|
+
readonly type: "number";
|
|
447
|
+
};
|
|
448
|
+
};
|
|
449
|
+
};
|
|
311
450
|
readonly connection: {
|
|
312
|
-
readonly
|
|
451
|
+
readonly oneOf: readonly [{
|
|
452
|
+
readonly type: "string";
|
|
453
|
+
}, {
|
|
454
|
+
readonly type: "object";
|
|
455
|
+
readonly properties: {
|
|
456
|
+
readonly host: {
|
|
457
|
+
readonly type: "string";
|
|
458
|
+
};
|
|
459
|
+
readonly port: {
|
|
460
|
+
readonly type: "number";
|
|
461
|
+
};
|
|
462
|
+
readonly user: {
|
|
463
|
+
readonly type: "string";
|
|
464
|
+
};
|
|
465
|
+
readonly password: {
|
|
466
|
+
readonly type: "string";
|
|
467
|
+
};
|
|
468
|
+
readonly database: {
|
|
469
|
+
readonly type: "string";
|
|
470
|
+
};
|
|
471
|
+
};
|
|
472
|
+
}];
|
|
313
473
|
};
|
|
314
474
|
};
|
|
315
475
|
};
|
|
@@ -462,8 +622,40 @@ export declare const defaultAppConfiguration: {
|
|
|
462
622
|
readonly client: {
|
|
463
623
|
readonly type: "string";
|
|
464
624
|
};
|
|
625
|
+
readonly pool: {
|
|
626
|
+
readonly type: "object";
|
|
627
|
+
readonly properties: {
|
|
628
|
+
readonly min: {
|
|
629
|
+
readonly type: "number";
|
|
630
|
+
};
|
|
631
|
+
readonly max: {
|
|
632
|
+
readonly type: "number";
|
|
633
|
+
};
|
|
634
|
+
};
|
|
635
|
+
};
|
|
465
636
|
readonly connection: {
|
|
466
|
-
readonly
|
|
637
|
+
readonly oneOf: readonly [{
|
|
638
|
+
readonly type: "string";
|
|
639
|
+
}, {
|
|
640
|
+
readonly type: "object";
|
|
641
|
+
readonly properties: {
|
|
642
|
+
readonly host: {
|
|
643
|
+
readonly type: "string";
|
|
644
|
+
};
|
|
645
|
+
readonly port: {
|
|
646
|
+
readonly type: "number";
|
|
647
|
+
};
|
|
648
|
+
readonly user: {
|
|
649
|
+
readonly type: "string";
|
|
650
|
+
};
|
|
651
|
+
readonly password: {
|
|
652
|
+
readonly type: "string";
|
|
653
|
+
};
|
|
654
|
+
readonly database: {
|
|
655
|
+
readonly type: "string";
|
|
656
|
+
};
|
|
657
|
+
};
|
|
658
|
+
}];
|
|
467
659
|
};
|
|
468
660
|
};
|
|
469
661
|
};
|
|
@@ -473,8 +665,40 @@ export declare const defaultAppConfiguration: {
|
|
|
473
665
|
readonly client: {
|
|
474
666
|
readonly type: "string";
|
|
475
667
|
};
|
|
668
|
+
readonly pool: {
|
|
669
|
+
readonly type: "object";
|
|
670
|
+
readonly properties: {
|
|
671
|
+
readonly min: {
|
|
672
|
+
readonly type: "number";
|
|
673
|
+
};
|
|
674
|
+
readonly max: {
|
|
675
|
+
readonly type: "number";
|
|
676
|
+
};
|
|
677
|
+
};
|
|
678
|
+
};
|
|
476
679
|
readonly connection: {
|
|
477
|
-
readonly
|
|
680
|
+
readonly oneOf: readonly [{
|
|
681
|
+
readonly type: "string";
|
|
682
|
+
}, {
|
|
683
|
+
readonly type: "object";
|
|
684
|
+
readonly properties: {
|
|
685
|
+
readonly host: {
|
|
686
|
+
readonly type: "string";
|
|
687
|
+
};
|
|
688
|
+
readonly port: {
|
|
689
|
+
readonly type: "number";
|
|
690
|
+
};
|
|
691
|
+
readonly user: {
|
|
692
|
+
readonly type: "string";
|
|
693
|
+
};
|
|
694
|
+
readonly password: {
|
|
695
|
+
readonly type: "string";
|
|
696
|
+
};
|
|
697
|
+
readonly database: {
|
|
698
|
+
readonly type: "string";
|
|
699
|
+
};
|
|
700
|
+
};
|
|
701
|
+
}];
|
|
478
702
|
};
|
|
479
703
|
};
|
|
480
704
|
};
|
|
@@ -484,8 +708,40 @@ export declare const defaultAppConfiguration: {
|
|
|
484
708
|
readonly client: {
|
|
485
709
|
readonly type: "string";
|
|
486
710
|
};
|
|
711
|
+
readonly pool: {
|
|
712
|
+
readonly type: "object";
|
|
713
|
+
readonly properties: {
|
|
714
|
+
readonly min: {
|
|
715
|
+
readonly type: "number";
|
|
716
|
+
};
|
|
717
|
+
readonly max: {
|
|
718
|
+
readonly type: "number";
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
};
|
|
487
722
|
readonly connection: {
|
|
488
|
-
readonly
|
|
723
|
+
readonly oneOf: readonly [{
|
|
724
|
+
readonly type: "string";
|
|
725
|
+
}, {
|
|
726
|
+
readonly type: "object";
|
|
727
|
+
readonly properties: {
|
|
728
|
+
readonly host: {
|
|
729
|
+
readonly type: "string";
|
|
730
|
+
};
|
|
731
|
+
readonly port: {
|
|
732
|
+
readonly type: "number";
|
|
733
|
+
};
|
|
734
|
+
readonly user: {
|
|
735
|
+
readonly type: "string";
|
|
736
|
+
};
|
|
737
|
+
readonly password: {
|
|
738
|
+
readonly type: "string";
|
|
739
|
+
};
|
|
740
|
+
readonly database: {
|
|
741
|
+
readonly type: "string";
|
|
742
|
+
};
|
|
743
|
+
};
|
|
744
|
+
}];
|
|
489
745
|
};
|
|
490
746
|
};
|
|
491
747
|
};
|
|
@@ -495,8 +751,40 @@ export declare const defaultAppConfiguration: {
|
|
|
495
751
|
readonly client: {
|
|
496
752
|
readonly type: "string";
|
|
497
753
|
};
|
|
754
|
+
readonly pool: {
|
|
755
|
+
readonly type: "object";
|
|
756
|
+
readonly properties: {
|
|
757
|
+
readonly min: {
|
|
758
|
+
readonly type: "number";
|
|
759
|
+
};
|
|
760
|
+
readonly max: {
|
|
761
|
+
readonly type: "number";
|
|
762
|
+
};
|
|
763
|
+
};
|
|
764
|
+
};
|
|
498
765
|
readonly connection: {
|
|
499
|
-
readonly
|
|
766
|
+
readonly oneOf: readonly [{
|
|
767
|
+
readonly type: "string";
|
|
768
|
+
}, {
|
|
769
|
+
readonly type: "object";
|
|
770
|
+
readonly properties: {
|
|
771
|
+
readonly host: {
|
|
772
|
+
readonly type: "string";
|
|
773
|
+
};
|
|
774
|
+
readonly port: {
|
|
775
|
+
readonly type: "number";
|
|
776
|
+
};
|
|
777
|
+
readonly user: {
|
|
778
|
+
readonly type: "string";
|
|
779
|
+
};
|
|
780
|
+
readonly password: {
|
|
781
|
+
readonly type: "string";
|
|
782
|
+
};
|
|
783
|
+
readonly database: {
|
|
784
|
+
readonly type: "string";
|
|
785
|
+
};
|
|
786
|
+
};
|
|
787
|
+
}];
|
|
500
788
|
};
|
|
501
789
|
};
|
|
502
790
|
};
|
package/lib/default-schemas.js
CHANGED
|
@@ -112,7 +112,28 @@ exports.sqlSettingsSchema = {
|
|
|
112
112
|
type: 'object',
|
|
113
113
|
properties: {
|
|
114
114
|
client: { type: 'string' },
|
|
115
|
-
|
|
115
|
+
pool: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {
|
|
118
|
+
min: { type: 'number' },
|
|
119
|
+
max: { type: 'number' }
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
connection: {
|
|
123
|
+
oneOf: [
|
|
124
|
+
{ type: 'string' },
|
|
125
|
+
{
|
|
126
|
+
type: 'object',
|
|
127
|
+
properties: {
|
|
128
|
+
host: { type: 'string' },
|
|
129
|
+
port: { type: 'number' },
|
|
130
|
+
user: { type: 'string' },
|
|
131
|
+
password: { type: 'string' },
|
|
132
|
+
database: { type: 'string' }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
116
137
|
}
|
|
117
138
|
};
|
|
118
139
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-schemas.js","sourceRoot":"","sources":["../src/default-schemas.ts"],"names":[],"mappings":";;;AAEa,QAAA,4BAA4B,GAAG;IAC1C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC;IAChD,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wBAAwB;SACtC;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,MAAM;iBACb;gBACD;oBACE,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,WAAW,EAAE,mDAAmD;SACjE;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mDAAmD;SACjE;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gCAAgC;SAC9C;QACD,cAAc,EAAE;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EAAE,sFAAsF;SACpG;QACD,eAAe,EAAE;YACf,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EACT,sIAAsI;SACzI;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;SACf;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,eAAe;oBACxB,WAAW,EAAE,oCAAoC;iBAClD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,gCAAgC;iBAC9C;aACF;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;YAC5C,UAAU,EAAE;gBACV,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8CAA8C;iBAC5D;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;iBACtC;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,eAAe;oBACxB,WAAW,EAAE,uCAAuC;iBACrD;gBACD,mBAAmB,EAAE;oBACnB,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8GAA8G;iBACjH;gBACD,mBAAmB,EAAE;oBACnB,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8GAA8G;iBACjH;aACF;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;iBACf;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACvB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC3B;iBACF;aACF;SACF;KACF;CACO,CAAA;AAIG,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"default-schemas.js","sourceRoot":"","sources":["../src/default-schemas.ts"],"names":[],"mappings":"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"}
|
package/lib/hooks/resolve.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { HookContext, NextFunction } from '@feathersjs/feathers';
|
|
2
2
|
import { Resolver } from '../resolver';
|
|
3
3
|
export type ResolverSetting<H extends HookContext> = Resolver<any, H> | Resolver<any, H>[];
|
|
4
|
-
export declare const resolveQuery: <
|
|
5
|
-
export declare const resolveData: <
|
|
6
|
-
export declare const resolveResult: <
|
|
4
|
+
export declare const resolveQuery: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next?: NextFunction) => Promise<any>;
|
|
5
|
+
export declare const resolveData: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next?: NextFunction) => Promise<any>;
|
|
6
|
+
export declare const resolveResult: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
7
7
|
export declare const DISPATCH: unique symbol;
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export
|
|
8
|
+
export declare const getDispatchValue: (value: any) => any;
|
|
9
|
+
export declare const getDispatch: (value: any) => any;
|
|
10
|
+
export declare const setDispatch: (current: any, dispatch: any) => any;
|
|
11
|
+
export declare const resolveExternal: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
12
|
+
export declare const resolveDispatch: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(...resolvers: Resolver<any, H>[]) => (context: H, next: NextFunction) => Promise<void>;
|
|
13
|
+
type ResolveAllSettings<H extends HookContext> = {
|
|
12
14
|
data?: {
|
|
13
15
|
create: Resolver<any, H>;
|
|
14
16
|
patch: Resolver<any, H>;
|
|
@@ -18,4 +20,13 @@ export type ResolveAllSettings<H extends HookContext> = {
|
|
|
18
20
|
result?: Resolver<any, H>;
|
|
19
21
|
dispatch?: Resolver<any, H>;
|
|
20
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* Resolve all resolvers at once.
|
|
25
|
+
*
|
|
26
|
+
* @param map The individual resolvers
|
|
27
|
+
* @returns A combined resolver middleware
|
|
28
|
+
* @deprecated Use individual data, query and external resolvers and hooks instead.
|
|
29
|
+
* @see https://dove.feathersjs.com/guides/cli/service.schemas.html
|
|
30
|
+
*/
|
|
21
31
|
export declare const resolveAll: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(map: ResolveAllSettings<H>) => (this: any, context: H, next?: import("@feathersjs/hooks").AsyncMiddleware<H>) => Promise<any>;
|
|
32
|
+
export {};
|
package/lib/hooks/resolve.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveAll = exports.resolveExternal = exports.
|
|
3
|
+
exports.resolveAll = exports.resolveDispatch = exports.resolveExternal = exports.setDispatch = exports.getDispatch = exports.getDispatchValue = exports.DISPATCH = exports.resolveResult = exports.resolveData = exports.resolveQuery = void 0;
|
|
4
4
|
const hooks_1 = require("@feathersjs/hooks");
|
|
5
|
-
const
|
|
6
|
-
return Object.freeze({
|
|
7
|
-
...context,
|
|
8
|
-
params: Object.freeze({
|
|
9
|
-
...context.params,
|
|
10
|
-
query: Object.freeze({})
|
|
11
|
-
})
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
const getData = (context) => {
|
|
5
|
+
const getResult = (context) => {
|
|
15
6
|
const isPaginated = context.method === 'find' && context.result.data;
|
|
16
7
|
const data = isPaginated ? context.result.data : context.result;
|
|
17
8
|
return { isPaginated, data };
|
|
@@ -27,9 +18,8 @@ const runResolvers = async (resolvers, data, ctx, status) => {
|
|
|
27
18
|
};
|
|
28
19
|
const resolveQuery = (...resolvers) => async (context, next) => {
|
|
29
20
|
var _a;
|
|
30
|
-
const ctx = getContext(context);
|
|
31
21
|
const data = ((_a = context === null || context === void 0 ? void 0 : context.params) === null || _a === void 0 ? void 0 : _a.query) || {};
|
|
32
|
-
const query = await runResolvers(resolvers, data,
|
|
22
|
+
const query = await runResolvers(resolvers, data, context);
|
|
33
23
|
context.params = {
|
|
34
24
|
...context.params,
|
|
35
25
|
query
|
|
@@ -41,16 +31,15 @@ const resolveQuery = (...resolvers) => async (context, next) => {
|
|
|
41
31
|
exports.resolveQuery = resolveQuery;
|
|
42
32
|
const resolveData = (...resolvers) => async (context, next) => {
|
|
43
33
|
if (context.data !== undefined) {
|
|
44
|
-
const ctx = getContext(context);
|
|
45
34
|
const data = context.data;
|
|
46
35
|
const status = {
|
|
47
36
|
originalContext: context
|
|
48
37
|
};
|
|
49
38
|
if (Array.isArray(data)) {
|
|
50
|
-
context.data = await Promise.all(data.map((current) => runResolvers(resolvers, current,
|
|
39
|
+
context.data = await Promise.all(data.map((current) => runResolvers(resolvers, current, context, status)));
|
|
51
40
|
}
|
|
52
41
|
else {
|
|
53
|
-
context.data = await runResolvers(resolvers, data,
|
|
42
|
+
context.data = await runResolvers(resolvers, data, context, status);
|
|
54
43
|
}
|
|
55
44
|
}
|
|
56
45
|
if (typeof next === 'function') {
|
|
@@ -62,30 +51,30 @@ const resolveResult = (...resolvers) => {
|
|
|
62
51
|
const virtualProperties = new Set(resolvers.reduce((acc, current) => acc.concat(current.virtualNames), []));
|
|
63
52
|
return async (context, next) => {
|
|
64
53
|
var _a;
|
|
65
|
-
if (typeof next
|
|
66
|
-
|
|
67
|
-
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select;
|
|
68
|
-
const resolve = {
|
|
69
|
-
originalContext: context,
|
|
70
|
-
...context.params.resolve,
|
|
71
|
-
properties: $resolve || select
|
|
72
|
-
};
|
|
73
|
-
context.params = {
|
|
74
|
-
...context.params,
|
|
75
|
-
resolve,
|
|
76
|
-
query: {
|
|
77
|
-
...query,
|
|
78
|
-
$select
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
await next();
|
|
54
|
+
if (typeof next !== 'function') {
|
|
55
|
+
throw new Error('The resolveResult hook must be used as an around hook');
|
|
82
56
|
}
|
|
83
|
-
const
|
|
57
|
+
const { $resolve, $select: select, ...query } = ((_a = context.params) === null || _a === void 0 ? void 0 : _a.query) || {};
|
|
58
|
+
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select;
|
|
59
|
+
const resolve = {
|
|
60
|
+
originalContext: context,
|
|
61
|
+
...context.params.resolve,
|
|
62
|
+
properties: $resolve || select
|
|
63
|
+
};
|
|
64
|
+
context.params = {
|
|
65
|
+
...context.params,
|
|
66
|
+
resolve,
|
|
67
|
+
query: {
|
|
68
|
+
...query,
|
|
69
|
+
...($select ? { $select } : {})
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
await next();
|
|
84
73
|
const status = context.params.resolve;
|
|
85
|
-
const { isPaginated, data } =
|
|
74
|
+
const { isPaginated, data } = getResult(context);
|
|
86
75
|
const result = Array.isArray(data)
|
|
87
|
-
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current,
|
|
88
|
-
: await runResolvers(resolvers, data,
|
|
76
|
+
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current, context, status)))
|
|
77
|
+
: await runResolvers(resolvers, data, context, status);
|
|
89
78
|
if (isPaginated) {
|
|
90
79
|
context.result.data = result;
|
|
91
80
|
}
|
|
@@ -96,26 +85,48 @@ const resolveResult = (...resolvers) => {
|
|
|
96
85
|
};
|
|
97
86
|
exports.resolveResult = resolveResult;
|
|
98
87
|
exports.DISPATCH = Symbol('@feathersjs/schema/dispatch');
|
|
99
|
-
const
|
|
88
|
+
const getDispatchValue = (value) => {
|
|
89
|
+
if (typeof value === 'object' && value !== null) {
|
|
90
|
+
if (value[exports.DISPATCH] !== undefined) {
|
|
91
|
+
return value[exports.DISPATCH];
|
|
92
|
+
}
|
|
93
|
+
if (Array.isArray(value)) {
|
|
94
|
+
return value.map((item) => (0, exports.getDispatchValue)(item));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
};
|
|
99
|
+
exports.getDispatchValue = getDispatchValue;
|
|
100
|
+
const getDispatch = (value) => typeof value === 'object' && value !== null && value[exports.DISPATCH] ? value[exports.DISPATCH] : null;
|
|
100
101
|
exports.getDispatch = getDispatch;
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
const setDispatch = (current, dispatch) => {
|
|
103
|
+
Object.defineProperty(current, exports.DISPATCH, {
|
|
104
|
+
value: dispatch,
|
|
105
|
+
enumerable: false,
|
|
106
|
+
configurable: false
|
|
107
|
+
});
|
|
108
|
+
return dispatch;
|
|
109
|
+
};
|
|
110
|
+
exports.setDispatch = setDispatch;
|
|
111
|
+
const resolveExternal = (...resolvers) => async (context, next) => {
|
|
112
|
+
if (typeof next !== 'function') {
|
|
113
|
+
throw new Error('The resolveExternal hook must be used as an around hook');
|
|
104
114
|
}
|
|
105
|
-
|
|
106
|
-
const existingDispatch = (0, exports.getDispatch)(context.result
|
|
115
|
+
await next();
|
|
116
|
+
const existingDispatch = (0, exports.getDispatch)(context.result);
|
|
107
117
|
if (existingDispatch !== null) {
|
|
108
118
|
context.dispatch = existingDispatch;
|
|
109
119
|
}
|
|
110
120
|
else {
|
|
111
121
|
const status = context.params.resolve;
|
|
112
|
-
const { isPaginated, data } =
|
|
122
|
+
const { isPaginated, data } = getResult(context);
|
|
113
123
|
const resolveAndGetDispatch = async (current) => {
|
|
114
|
-
const resolved = await runResolvers(resolvers, current,
|
|
115
|
-
|
|
116
|
-
res[key] = (0, exports.
|
|
124
|
+
const resolved = await runResolvers(resolvers, current, context, status);
|
|
125
|
+
const currentDispatch = Object.keys(resolved).reduce((res, key) => {
|
|
126
|
+
res[key] = (0, exports.getDispatchValue)(resolved[key]);
|
|
117
127
|
return res;
|
|
118
128
|
}, {});
|
|
129
|
+
return (0, exports.setDispatch)(current, currentDispatch);
|
|
119
130
|
};
|
|
120
131
|
const result = await (Array.isArray(data)
|
|
121
132
|
? Promise.all(data.map(resolveAndGetDispatch))
|
|
@@ -126,17 +137,20 @@ const resolveDispatch = (...resolvers) => async (context, next) => {
|
|
|
126
137
|
data: result
|
|
127
138
|
}
|
|
128
139
|
: result;
|
|
129
|
-
context.dispatch = dispatch;
|
|
130
|
-
Object.defineProperty(context.result, exports.DISPATCH, {
|
|
131
|
-
value: dispatch,
|
|
132
|
-
enumerable: false,
|
|
133
|
-
configurable: false
|
|
134
|
-
});
|
|
140
|
+
context.dispatch = (0, exports.setDispatch)(context.result, dispatch);
|
|
135
141
|
}
|
|
136
142
|
};
|
|
137
|
-
exports.
|
|
138
|
-
exports.
|
|
143
|
+
exports.resolveExternal = resolveExternal;
|
|
144
|
+
exports.resolveDispatch = exports.resolveExternal;
|
|
139
145
|
const dataMethods = ['create', 'update', 'patch'];
|
|
146
|
+
/**
|
|
147
|
+
* Resolve all resolvers at once.
|
|
148
|
+
*
|
|
149
|
+
* @param map The individual resolvers
|
|
150
|
+
* @returns A combined resolver middleware
|
|
151
|
+
* @deprecated Use individual data, query and external resolvers and hooks instead.
|
|
152
|
+
* @see https://dove.feathersjs.com/guides/cli/service.schemas.html
|
|
153
|
+
*/
|
|
140
154
|
const resolveAll = (map) => {
|
|
141
155
|
const middleware = [];
|
|
142
156
|
middleware.push((0, exports.resolveDispatch)(map.dispatch));
|
package/lib/hooks/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/hooks/resolve.ts"],"names":[],"mappings":";;;AACA,6CAA2C;AAG3C,MAAM,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/hooks/resolve.ts"],"names":[],"mappings":"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"}
|
package/lib/json-schema.d.ts
CHANGED
|
@@ -139,4 +139,21 @@ export declare const querySyntax: <T extends {
|
|
|
139
139
|
readonly properties: { [K_2 in keyof T]: PropertyQuery<T[K_2], X[K_2]>; };
|
|
140
140
|
};
|
|
141
141
|
};
|
|
142
|
+
readonly $and: {
|
|
143
|
+
readonly type: "array";
|
|
144
|
+
readonly items: {
|
|
145
|
+
readonly type: "object";
|
|
146
|
+
readonly additionalProperties: false;
|
|
147
|
+
readonly properties: { [K_2 in keyof T]: PropertyQuery<T[K_2], X[K_2]>; } & {
|
|
148
|
+
readonly $or: {
|
|
149
|
+
readonly type: "array";
|
|
150
|
+
readonly items: {
|
|
151
|
+
readonly type: "object";
|
|
152
|
+
readonly additionalProperties: false;
|
|
153
|
+
readonly properties: { [K_2 in keyof T]: PropertyQuery<T[K_2], X[K_2]>; };
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
};
|
|
142
159
|
} & { [K_2 in keyof T]: PropertyQuery<T[K_2], X[K_2]>; };
|
package/lib/json-schema.js
CHANGED
|
@@ -105,6 +105,25 @@ exports.queryProperties = queryProperties;
|
|
|
105
105
|
const querySyntax = (definition, extensions = {}) => {
|
|
106
106
|
const keys = Object.keys(definition);
|
|
107
107
|
const props = (0, exports.queryProperties)(definition, extensions);
|
|
108
|
+
const $or = {
|
|
109
|
+
type: 'array',
|
|
110
|
+
items: {
|
|
111
|
+
type: 'object',
|
|
112
|
+
additionalProperties: false,
|
|
113
|
+
properties: props
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const $and = {
|
|
117
|
+
type: 'array',
|
|
118
|
+
items: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
additionalProperties: false,
|
|
121
|
+
properties: {
|
|
122
|
+
...props,
|
|
123
|
+
$or
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
108
127
|
return {
|
|
109
128
|
$limit: {
|
|
110
129
|
type: 'number',
|
|
@@ -133,14 +152,8 @@ const querySyntax = (definition, extensions = {}) => {
|
|
|
133
152
|
...(keys.length > 0 ? { enum: keys } : {})
|
|
134
153
|
}
|
|
135
154
|
},
|
|
136
|
-
$or
|
|
137
|
-
|
|
138
|
-
items: {
|
|
139
|
-
type: 'object',
|
|
140
|
-
additionalProperties: false,
|
|
141
|
-
properties: props
|
|
142
|
-
}
|
|
143
|
-
},
|
|
155
|
+
$or,
|
|
156
|
+
$and,
|
|
144
157
|
...props
|
|
145
158
|
};
|
|
146
159
|
};
|
package/lib/json-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/schema",
|
|
3
3
|
"description": "A common data schema definition format",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.37",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"types": "lib/",
|
|
@@ -54,24 +54,24 @@
|
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@feathersjs/adapter-commons": "^5.0.0-pre.
|
|
58
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
59
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
60
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
57
|
+
"@feathersjs/adapter-commons": "^5.0.0-pre.37",
|
|
58
|
+
"@feathersjs/commons": "^5.0.0-pre.37",
|
|
59
|
+
"@feathersjs/errors": "^5.0.0-pre.37",
|
|
60
|
+
"@feathersjs/feathers": "^5.0.0-pre.37",
|
|
61
61
|
"@feathersjs/hooks": "^0.7.6",
|
|
62
62
|
"@types/json-schema": "^7.0.11",
|
|
63
|
-
"ajv": "^8.
|
|
63
|
+
"ajv": "^8.12.0",
|
|
64
64
|
"ajv-formats": "^2.1.1",
|
|
65
65
|
"json-schema-to-ts": "^2.6.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@feathersjs/memory": "^5.0.0-pre.
|
|
68
|
+
"@feathersjs/memory": "^5.0.0-pre.37",
|
|
69
69
|
"@types/mocha": "^10.0.1",
|
|
70
70
|
"@types/node": "^18.11.18",
|
|
71
71
|
"ajv-formats": "^2.1.1",
|
|
72
72
|
"mocha": "^10.2.0",
|
|
73
73
|
"shx": "^0.3.4",
|
|
74
|
-
"typescript": "^4.9.
|
|
74
|
+
"typescript": "^4.9.5"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "17a8b3b2614876772472d3cab3d96d45c01db6ed"
|
|
77
77
|
}
|
package/src/default-schemas.ts
CHANGED
|
@@ -117,7 +117,28 @@ export const sqlSettingsSchema = {
|
|
|
117
117
|
type: 'object',
|
|
118
118
|
properties: {
|
|
119
119
|
client: { type: 'string' },
|
|
120
|
-
|
|
120
|
+
pool: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
min: { type: 'number' },
|
|
124
|
+
max: { type: 'number' }
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
connection: {
|
|
128
|
+
oneOf: [
|
|
129
|
+
{ type: 'string' },
|
|
130
|
+
{
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
host: { type: 'string' },
|
|
134
|
+
port: { type: 'number' },
|
|
135
|
+
user: { type: 'string' },
|
|
136
|
+
password: { type: 'string' },
|
|
137
|
+
database: { type: 'string' }
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
}
|
|
121
142
|
}
|
|
122
143
|
} as const
|
|
123
144
|
|
package/src/hooks/resolve.ts
CHANGED
|
@@ -2,17 +2,7 @@ import { HookContext, NextFunction } from '@feathersjs/feathers'
|
|
|
2
2
|
import { compose } from '@feathersjs/hooks'
|
|
3
3
|
import { Resolver, ResolverStatus } from '../resolver'
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
return Object.freeze({
|
|
7
|
-
...context,
|
|
8
|
-
params: Object.freeze({
|
|
9
|
-
...context.params,
|
|
10
|
-
query: Object.freeze({})
|
|
11
|
-
})
|
|
12
|
-
})
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const getData = <H extends HookContext>(context: H) => {
|
|
5
|
+
const getResult = <H extends HookContext>(context: H) => {
|
|
16
6
|
const isPaginated = context.method === 'find' && context.result.data
|
|
17
7
|
const data = isPaginated ? context.result.data : context.result
|
|
18
8
|
|
|
@@ -39,11 +29,10 @@ const runResolvers = async <T, H extends HookContext>(
|
|
|
39
29
|
export type ResolverSetting<H extends HookContext> = Resolver<any, H> | Resolver<any, H>[]
|
|
40
30
|
|
|
41
31
|
export const resolveQuery =
|
|
42
|
-
<
|
|
32
|
+
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
43
33
|
async (context: H, next?: NextFunction) => {
|
|
44
|
-
const ctx = getContext(context)
|
|
45
34
|
const data = context?.params?.query || {}
|
|
46
|
-
const query = await runResolvers(resolvers, data,
|
|
35
|
+
const query = await runResolvers(resolvers, data, context)
|
|
47
36
|
|
|
48
37
|
context.params = {
|
|
49
38
|
...context.params,
|
|
@@ -56,10 +45,9 @@ export const resolveQuery =
|
|
|
56
45
|
}
|
|
57
46
|
|
|
58
47
|
export const resolveData =
|
|
59
|
-
<
|
|
48
|
+
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
60
49
|
async (context: H, next?: NextFunction) => {
|
|
61
50
|
if (context.data !== undefined) {
|
|
62
|
-
const ctx = getContext(context)
|
|
63
51
|
const data = context.data
|
|
64
52
|
|
|
65
53
|
const status = {
|
|
@@ -67,9 +55,11 @@ export const resolveData =
|
|
|
67
55
|
}
|
|
68
56
|
|
|
69
57
|
if (Array.isArray(data)) {
|
|
70
|
-
context.data = await Promise.all(
|
|
58
|
+
context.data = await Promise.all(
|
|
59
|
+
data.map((current) => runResolvers(resolvers, current, context, status))
|
|
60
|
+
)
|
|
71
61
|
} else {
|
|
72
|
-
context.data = await runResolvers(resolvers, data,
|
|
62
|
+
context.data = await runResolvers(resolvers, data, context, status)
|
|
73
63
|
}
|
|
74
64
|
}
|
|
75
65
|
|
|
@@ -78,40 +68,39 @@ export const resolveData =
|
|
|
78
68
|
}
|
|
79
69
|
}
|
|
80
70
|
|
|
81
|
-
export const resolveResult = <
|
|
82
|
-
const virtualProperties = new Set(
|
|
83
|
-
resolvers.reduce((acc, current) => acc.concat(current.virtualNames), [] as (keyof T)[])
|
|
84
|
-
)
|
|
71
|
+
export const resolveResult = <H extends HookContext>(...resolvers: Resolver<any, H>[]) => {
|
|
72
|
+
const virtualProperties = new Set(resolvers.reduce((acc, current) => acc.concat(current.virtualNames), []))
|
|
85
73
|
|
|
86
|
-
return async (context: H, next
|
|
87
|
-
if (typeof next
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const resolve = {
|
|
91
|
-
originalContext: context,
|
|
92
|
-
...context.params.resolve,
|
|
93
|
-
properties: $resolve || select
|
|
94
|
-
}
|
|
74
|
+
return async (context: H, next: NextFunction) => {
|
|
75
|
+
if (typeof next !== 'function') {
|
|
76
|
+
throw new Error('The resolveResult hook must be used as an around hook')
|
|
77
|
+
}
|
|
95
78
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
79
|
+
const { $resolve, $select: select, ...query } = context.params?.query || {}
|
|
80
|
+
const $select = Array.isArray(select) ? select.filter((name) => !virtualProperties.has(name)) : select
|
|
81
|
+
const resolve = {
|
|
82
|
+
originalContext: context,
|
|
83
|
+
...context.params.resolve,
|
|
84
|
+
properties: $resolve || select
|
|
85
|
+
}
|
|
104
86
|
|
|
105
|
-
|
|
87
|
+
context.params = {
|
|
88
|
+
...context.params,
|
|
89
|
+
resolve,
|
|
90
|
+
query: {
|
|
91
|
+
...query,
|
|
92
|
+
...($select ? { $select } : {})
|
|
93
|
+
}
|
|
106
94
|
}
|
|
107
95
|
|
|
108
|
-
|
|
96
|
+
await next()
|
|
97
|
+
|
|
109
98
|
const status = context.params.resolve
|
|
110
|
-
const { isPaginated, data } =
|
|
99
|
+
const { isPaginated, data } = getResult(context)
|
|
111
100
|
|
|
112
101
|
const result = Array.isArray(data)
|
|
113
|
-
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current,
|
|
114
|
-
: await runResolvers(resolvers, data,
|
|
102
|
+
? await Promise.all(data.map(async (current) => runResolvers(resolvers, current, context, status)))
|
|
103
|
+
: await runResolvers(resolvers, data, context, status)
|
|
115
104
|
|
|
116
105
|
if (isPaginated) {
|
|
117
106
|
context.result.data = result
|
|
@@ -123,32 +112,58 @@ export const resolveResult = <T, H extends HookContext>(...resolvers: Resolver<T
|
|
|
123
112
|
|
|
124
113
|
export const DISPATCH = Symbol('@feathersjs/schema/dispatch')
|
|
125
114
|
|
|
126
|
-
export const
|
|
127
|
-
typeof value === 'object' && value !== null
|
|
115
|
+
export const getDispatchValue = (value: any): any => {
|
|
116
|
+
if (typeof value === 'object' && value !== null) {
|
|
117
|
+
if (value[DISPATCH] !== undefined) {
|
|
118
|
+
return value[DISPATCH]
|
|
119
|
+
}
|
|
128
120
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
async (context: H, next?: NextFunction) => {
|
|
132
|
-
if (typeof next === 'function') {
|
|
133
|
-
await next()
|
|
121
|
+
if (Array.isArray(value)) {
|
|
122
|
+
return value.map((item) => getDispatchValue(item))
|
|
134
123
|
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return value
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export const getDispatch = (value: any): any =>
|
|
130
|
+
typeof value === 'object' && value !== null && value[DISPATCH] ? value[DISPATCH] : null
|
|
135
131
|
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
export const setDispatch = (current: any, dispatch: any) => {
|
|
133
|
+
Object.defineProperty(current, DISPATCH, {
|
|
134
|
+
value: dispatch,
|
|
135
|
+
enumerable: false,
|
|
136
|
+
configurable: false
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
return dispatch
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export const resolveExternal =
|
|
143
|
+
<H extends HookContext>(...resolvers: Resolver<any, H>[]) =>
|
|
144
|
+
async (context: H, next: NextFunction) => {
|
|
145
|
+
if (typeof next !== 'function') {
|
|
146
|
+
throw new Error('The resolveExternal hook must be used as an around hook')
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
await next()
|
|
150
|
+
|
|
151
|
+
const existingDispatch = getDispatch(context.result)
|
|
138
152
|
|
|
139
153
|
if (existingDispatch !== null) {
|
|
140
154
|
context.dispatch = existingDispatch
|
|
141
155
|
} else {
|
|
142
156
|
const status = context.params.resolve
|
|
143
|
-
const { isPaginated, data } =
|
|
157
|
+
const { isPaginated, data } = getResult(context)
|
|
144
158
|
const resolveAndGetDispatch = async (current: any) => {
|
|
145
|
-
const resolved
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
res[key] = getDispatch(resolved[key])
|
|
159
|
+
const resolved = await runResolvers(resolvers, current, context, status)
|
|
160
|
+
const currentDispatch = Object.keys(resolved).reduce((res, key) => {
|
|
161
|
+
res[key] = getDispatchValue(resolved[key])
|
|
149
162
|
|
|
150
163
|
return res
|
|
151
|
-
}, {} as any)
|
|
164
|
+
}, {} as Record<string, any>)
|
|
165
|
+
|
|
166
|
+
return setDispatch(current, currentDispatch)
|
|
152
167
|
}
|
|
153
168
|
|
|
154
169
|
const result = await (Array.isArray(data)
|
|
@@ -161,18 +176,13 @@ export const resolveDispatch =
|
|
|
161
176
|
}
|
|
162
177
|
: result
|
|
163
178
|
|
|
164
|
-
context.dispatch = dispatch
|
|
165
|
-
Object.defineProperty(context.result, DISPATCH, {
|
|
166
|
-
value: dispatch,
|
|
167
|
-
enumerable: false,
|
|
168
|
-
configurable: false
|
|
169
|
-
})
|
|
179
|
+
context.dispatch = setDispatch(context.result, dispatch)
|
|
170
180
|
}
|
|
171
181
|
}
|
|
172
182
|
|
|
173
|
-
export const
|
|
183
|
+
export const resolveDispatch = resolveExternal
|
|
174
184
|
|
|
175
|
-
|
|
185
|
+
type ResolveAllSettings<H extends HookContext> = {
|
|
176
186
|
data?: {
|
|
177
187
|
create: Resolver<any, H>
|
|
178
188
|
patch: Resolver<any, H>
|
|
@@ -185,6 +195,14 @@ export type ResolveAllSettings<H extends HookContext> = {
|
|
|
185
195
|
|
|
186
196
|
const dataMethods = ['create', 'update', 'patch'] as const
|
|
187
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Resolve all resolvers at once.
|
|
200
|
+
*
|
|
201
|
+
* @param map The individual resolvers
|
|
202
|
+
* @returns A combined resolver middleware
|
|
203
|
+
* @deprecated Use individual data, query and external resolvers and hooks instead.
|
|
204
|
+
* @see https://dove.feathersjs.com/guides/cli/service.schemas.html
|
|
205
|
+
*/
|
|
188
206
|
export const resolveAll = <H extends HookContext>(map: ResolveAllSettings<H>) => {
|
|
189
207
|
const middleware = []
|
|
190
208
|
|
package/src/json-schema.ts
CHANGED
|
@@ -172,6 +172,25 @@ export const querySyntax = <
|
|
|
172
172
|
) => {
|
|
173
173
|
const keys = Object.keys(definition)
|
|
174
174
|
const props = queryProperties(definition, extensions)
|
|
175
|
+
const $or = {
|
|
176
|
+
type: 'array',
|
|
177
|
+
items: {
|
|
178
|
+
type: 'object',
|
|
179
|
+
additionalProperties: false,
|
|
180
|
+
properties: props
|
|
181
|
+
}
|
|
182
|
+
} as const
|
|
183
|
+
const $and = {
|
|
184
|
+
type: 'array',
|
|
185
|
+
items: {
|
|
186
|
+
type: 'object',
|
|
187
|
+
additionalProperties: false,
|
|
188
|
+
properties: {
|
|
189
|
+
...props,
|
|
190
|
+
$or
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
} as const
|
|
175
194
|
|
|
176
195
|
return {
|
|
177
196
|
$limit: {
|
|
@@ -203,14 +222,8 @@ export const querySyntax = <
|
|
|
203
222
|
...(keys.length > 0 ? { enum: keys as any as (keyof T)[] } : {})
|
|
204
223
|
}
|
|
205
224
|
},
|
|
206
|
-
$or
|
|
207
|
-
|
|
208
|
-
items: {
|
|
209
|
-
type: 'object',
|
|
210
|
-
additionalProperties: false,
|
|
211
|
-
properties: props
|
|
212
|
-
}
|
|
213
|
-
},
|
|
225
|
+
$or,
|
|
226
|
+
$and,
|
|
214
227
|
...props
|
|
215
228
|
} as const
|
|
216
229
|
}
|