@webda/core 3.9.1 → 3.10.0

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.
Files changed (55) hide show
  1. package/lib/application.d.ts +7 -0
  2. package/lib/application.js +9 -2
  3. package/lib/application.js.map +1 -1
  4. package/lib/core.d.ts +10 -0
  5. package/lib/core.js +34 -6
  6. package/lib/core.js.map +1 -1
  7. package/lib/core.spec.js +4 -0
  8. package/lib/core.spec.js.map +1 -1
  9. package/lib/models/aclmodel.js +55 -1
  10. package/lib/models/aclmodel.js.map +1 -1
  11. package/lib/models/coremodel.d.ts +1 -0
  12. package/lib/models/coremodel.js +2 -2
  13. package/lib/models/coremodel.js.map +1 -1
  14. package/lib/router.d.ts +20 -0
  15. package/lib/router.js +27 -0
  16. package/lib/router.js.map +1 -1
  17. package/lib/router.spec.js +11 -0
  18. package/lib/router.spec.js.map +1 -1
  19. package/lib/services/binary.d.ts +1 -0
  20. package/lib/services/binary.js +5 -1
  21. package/lib/services/binary.js.map +1 -1
  22. package/lib/services/cron.spec.js +4 -0
  23. package/lib/services/cron.spec.js.map +1 -1
  24. package/lib/services/domainservice.js +466 -26
  25. package/lib/services/domainservice.js.map +1 -1
  26. package/lib/services/domainservice.spec.js +22 -5
  27. package/lib/services/domainservice.spec.js.map +1 -1
  28. package/lib/services/filebinary.spec.js +2 -1
  29. package/lib/services/filebinary.spec.js.map +1 -1
  30. package/lib/services/invitationservice.js +127 -1
  31. package/lib/services/invitationservice.js.map +1 -1
  32. package/lib/services/service.spec.js +4 -0
  33. package/lib/services/service.spec.js.map +1 -1
  34. package/lib/services/version.js +17 -1
  35. package/lib/services/version.js.map +1 -1
  36. package/lib/stores/memory.d.ts +11 -3
  37. package/lib/stores/memory.js +21 -8
  38. package/lib/stores/memory.js.map +1 -1
  39. package/lib/stores/memory.spec.js +7 -9
  40. package/lib/stores/memory.spec.js.map +1 -1
  41. package/lib/stores/store.d.ts +1 -0
  42. package/lib/stores/store.js +18 -4
  43. package/lib/stores/store.js.map +1 -1
  44. package/lib/test.d.ts +8 -2
  45. package/lib/test.js +9 -0
  46. package/lib/test.js.map +1 -1
  47. package/lib/unpackedapplication.d.ts +5 -0
  48. package/lib/unpackedapplication.js +19 -1
  49. package/lib/unpackedapplication.js.map +1 -1
  50. package/lib/utils/serializers.js +22 -4
  51. package/lib/utils/serializers.js.map +1 -1
  52. package/lib/utils/serializers.spec.js +9 -1
  53. package/lib/utils/serializers.spec.js.map +1 -1
  54. package/package.json +4 -4
  55. package/webda.module.json +40 -0
@@ -307,6 +307,7 @@ export class RESTDomainService extends DomainService {
307
307
  const depth = context.depth || 0;
308
308
  const relations = model.getRelations();
309
309
  const injectAttribute = relations?.parent?.attribute;
310
+ const app = this.getWebda().getApplication();
310
311
  const injector = (service, method, type, ...args) => {
311
312
  return async (context) => {
312
313
  let parentId = `pid.${depth - 1}`;
@@ -351,20 +352,242 @@ export class RESTDomainService extends DomainService {
351
352
  const prefix = (context.prefix || (this.parameters.url.endsWith("/") ? this.parameters.url : this.parameters.url + "/")) +
352
353
  this.transformName(name);
353
354
  context.prefix = prefix + `/{pid.${depth}}/`;
355
+ // Register the model url
356
+ this.getWebda().getRouter().registerModelUrl(app.getModelName(model), prefix);
357
+ let openapi = {
358
+ [this.parameters.queryMethod.toLowerCase()]: {
359
+ tags: [name],
360
+ summary: `Query ${name}`,
361
+ operationId: `query${name}`,
362
+ requestBody: this.parameters.queryMethod === "GET"
363
+ ? undefined
364
+ : {
365
+ content: {
366
+ "application/json": {
367
+ schema: {
368
+ properties: {
369
+ q: {
370
+ type: "string"
371
+ }
372
+ }
373
+ }
374
+ }
375
+ }
376
+ },
377
+ parameters: this.parameters.queryMethod === "GET"
378
+ ? [
379
+ {
380
+ name: "q",
381
+ in: "query",
382
+ description: "Query to execute",
383
+ schema: {
384
+ type: "string"
385
+ }
386
+ }
387
+ ]
388
+ : [],
389
+ responses: {
390
+ "200": {
391
+ description: "Operation success",
392
+ content: {
393
+ "application/json": {
394
+ schema: {
395
+ properties: {
396
+ continuationToken: {
397
+ type: "string"
398
+ },
399
+ results: {
400
+ type: "array",
401
+ items: {
402
+ $ref: `#/components/schemas/${model.getIdentifier()}`
403
+ }
404
+ }
405
+ }
406
+ }
407
+ }
408
+ }
409
+ },
410
+ "400": {
411
+ description: "Query is invalid"
412
+ },
413
+ "403": {
414
+ description: "You don't have permissions"
415
+ }
416
+ }
417
+ }
418
+ };
354
419
  model.Expose.restrict.query ||
355
- this.addRoute(`${prefix}${this.parameters.queryMethod === "GET" ? "{?q?}" : ""}`, [this.parameters.queryMethod], injector(model.store(), "httpQuery", "QUERY", model.store().handleModel(model)));
420
+ this.addRoute(`${prefix}${this.parameters.queryMethod === "GET" ? "{?q?}" : ""}`, [this.parameters.queryMethod], injector(model.store(), "httpQuery", "QUERY", model.store().handleModel(model)), openapi);
421
+ openapi = {
422
+ post: {
423
+ tags: [name],
424
+ summary: `Create ${name}`,
425
+ operationId: `create${name}`,
426
+ requestBody: {
427
+ content: {
428
+ "application/json": {
429
+ schema: {
430
+ $ref: `#/components/schemas/${model.getIdentifier()}`
431
+ }
432
+ }
433
+ }
434
+ },
435
+ responses: {
436
+ "200": {
437
+ description: "Operation success",
438
+ content: {
439
+ "application/json": {
440
+ schema: {
441
+ $ref: `#/components/schemas/${model.getIdentifier()}`
442
+ }
443
+ }
444
+ }
445
+ },
446
+ "400": {
447
+ description: "Invalid input"
448
+ },
449
+ "403": {
450
+ description: "You don't have permissions"
451
+ },
452
+ "409": {
453
+ description: "Object already exists"
454
+ }
455
+ }
456
+ }
457
+ };
356
458
  model.Expose.restrict.create ||
357
- this.addRoute(`${prefix}`, ["POST"], injector(model.store(), "operationCreate", "SET", model.getIdentifier()));
459
+ this.addRoute(`${prefix}`, ["POST"], injector(model.store(), "operationCreate", "SET", model.getIdentifier()), openapi);
460
+ openapi = {
461
+ delete: {
462
+ tags: [name],
463
+ operationId: `delete${name}`,
464
+ description: `Delete ${name} if the permissions allow`,
465
+ summary: `Delete a ${name}`,
466
+ responses: {
467
+ "204": {
468
+ description: "Operation success"
469
+ },
470
+ "403": {
471
+ description: "You don't have permissions"
472
+ },
473
+ "404": {
474
+ description: "Unknown object"
475
+ }
476
+ }
477
+ }
478
+ };
358
479
  model.Expose.restrict.delete ||
359
- this.addRoute(`${prefix}/{uuid}`, ["DELETE"], injector(model.store(), "httpDelete", "DELETE"));
480
+ this.addRoute(`${prefix}/{uuid}`, ["DELETE"], injector(model.store(), "httpDelete", "DELETE"), openapi);
481
+ let openapiInfo = {
482
+ tags: [name],
483
+ operationId: `update${name}`,
484
+ description: `Update ${name} if the permissions allow`,
485
+ summary: `Update a ${name}`,
486
+ requestBody: {
487
+ content: {
488
+ "application/json": {
489
+ schema: {
490
+ $ref: `#/components/schemas/${model.getIdentifier()}`
491
+ }
492
+ }
493
+ }
494
+ },
495
+ responses: {
496
+ "204": {
497
+ description: "Operation success"
498
+ },
499
+ "400": {
500
+ description: "Invalid input"
501
+ },
502
+ "403": {
503
+ description: "You don't have permissions"
504
+ },
505
+ "404": {
506
+ description: "Unknown object"
507
+ }
508
+ }
509
+ };
510
+ openapi = {
511
+ put: openapiInfo,
512
+ patch: openapiInfo
513
+ };
360
514
  model.Expose.restrict.update ||
361
- this.addRoute(`${prefix}/{uuid}`, ["PUT", "PATCH"], injector(model.store(), "httpUpdate", "SET"));
362
- model.Expose.restrict.get || this.addRoute(`${prefix}/{uuid}`, ["GET"], injector(model.store(), "httpGet", "GET"));
515
+ this.addRoute(`${prefix}/{uuid}`, ["PUT", "PATCH"], injector(model.store(), "httpUpdate", "SET"), openapi);
516
+ openapi = {
517
+ get: {
518
+ tags: [name],
519
+ description: `Retrieve ${name} model if permissions allow`,
520
+ summary: `Retrieve a ${name}`,
521
+ operationId: `get${name}`,
522
+ responses: {
523
+ "200": {
524
+ content: {
525
+ "application/json": {
526
+ schema: {
527
+ $ref: `#/components/schemas/${model.getIdentifier()}`
528
+ }
529
+ }
530
+ }
531
+ },
532
+ "400": {
533
+ description: "Object is invalid"
534
+ },
535
+ "403": {
536
+ description: "You don't have permissions"
537
+ },
538
+ "404": {
539
+ description: "Unknown object"
540
+ }
541
+ }
542
+ }
543
+ };
544
+ model.Expose.restrict.get ||
545
+ this.addRoute(`${prefix}/{uuid}`, ["GET"], injector(model.store(), "httpGet", "GET"), openapi);
363
546
  // Add all actions
364
547
  // Actions cannot be restricted as its purpose is to be exposed
365
548
  let actions = model.getActions();
366
549
  Object.keys(actions).forEach(actionName => {
367
550
  let action = actions[actionName];
551
+ openapi = {
552
+ ...action.openapi
553
+ };
554
+ (action.methods || ["PUT"]).forEach(method => {
555
+ openapi[method.toLowerCase()] = {
556
+ tags: [name],
557
+ ...(action.openapi?.[method.toLowerCase()] ?? {})
558
+ };
559
+ });
560
+ if (app.hasSchema(`${model.getIdentifier(false)}.${actionName}.input`)) {
561
+ Object.keys(openapi)
562
+ .filter(k => ["get", "post", "put", "patch", "delete"].includes(k))
563
+ .forEach(k => {
564
+ openapi[k].requestBody = {
565
+ content: {
566
+ "application/json": {
567
+ schema: {
568
+ $ref: `#/components/schemas/${model.getIdentifier(false)}.${actionName}.input`
569
+ }
570
+ }
571
+ }
572
+ };
573
+ });
574
+ }
575
+ if (app.hasSchema(`${model.getIdentifier(false)}.${actionName}.output`)) {
576
+ Object.keys(openapi)
577
+ .filter(k => ["get", "post", "put", "patch", "delete"].includes(k))
578
+ .forEach(k => {
579
+ var _a, _b;
580
+ (_a = openapi[k]).responses ?? (_a.responses = {});
581
+ (_b = openapi[k].responses)["200"] ?? (_b["200"] = {});
582
+ openapi[k].responses["200"].content = {
583
+ "application/json": {
584
+ schema: {
585
+ $ref: `#/components/schemas/${model.getIdentifier(false)}.${actionName}.output`
586
+ }
587
+ }
588
+ };
589
+ });
590
+ }
368
591
  this.addRoute(action.global ? `${prefix}/${actionName}` : `${prefix}/{uuid}/${actionName}`, action.methods || ["PUT"], async (ctx) => {
369
592
  if (action.global) {
370
593
  return model.store().httpGlobalAction(ctx, model);
@@ -373,7 +596,7 @@ export class RESTDomainService extends DomainService {
373
596
  ctx.getParameters().uuid = model.completeUid(ctx.getParameters().uuid);
374
597
  return model.store().httpAction(ctx);
375
598
  }
376
- }, action.openapi);
599
+ }, openapi);
377
600
  });
378
601
  /*
379
602
  Binaries should expose several methods
@@ -393,39 +616,256 @@ export class RESTDomainService extends DomainService {
393
616
  DELETE /{index}/{hash} to delete a binary
394
617
  PUT /{index}/{hash} to update metadata
395
618
  */
396
- (relations.binaries || []).forEach(name => {
397
- const store = Core.get().getBinaryStore(model, name.attribute);
619
+ (relations.binaries || []).forEach(binary => {
620
+ const store = Core.get().getBinaryStore(model, binary.attribute);
398
621
  const modelInjector = async (ctx) => {
399
622
  ctx.getParameters().model = model.getIdentifier();
400
- ctx.getParameters().property = name.attribute;
623
+ ctx.getParameters().property = binary.attribute;
401
624
  await store.httpRoute(ctx);
402
625
  };
403
626
  const modelInjectorChallenge = async (ctx) => {
404
627
  ctx.getParameters().model = model.getIdentifier();
405
- ctx.getParameters().property = name.attribute;
628
+ ctx.getParameters().property = binary.attribute;
406
629
  await store.httpChallenge(ctx);
407
630
  };
408
631
  const modelInjectorGet = async (ctx) => {
409
632
  ctx.getParameters().model = model.getIdentifier();
410
- ctx.getParameters().property = name.attribute;
633
+ ctx.getParameters().property = binary.attribute;
411
634
  await store.httpGet(ctx);
412
635
  };
413
- if (name.cardinality === "ONE") {
414
- this.addRoute(`${prefix}/{uuid}/${name.attribute}`, ["GET"], modelInjectorGet);
415
- this.addRoute(`${prefix}/{uuid}/${name.attribute}`, ["PUT"], modelInjectorChallenge);
416
- this.addRoute(`${prefix}/{uuid}/${name.attribute}`, ["POST"], modelInjector);
417
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{hash}`, ["DELETE"], modelInjector);
418
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{hash}`, ["PUT"], modelInjector);
419
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/url`, ["GET"], modelInjectorGet);
420
- }
421
- else {
422
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{index}`, ["GET"], modelInjectorGet);
423
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{index}/url`, ["GET"], modelInjectorGet);
424
- this.addRoute(`${prefix}/{uuid}/${name.attribute}`, ["PUT"], modelInjectorChallenge);
425
- this.addRoute(`${prefix}/{uuid}/${name.attribute}`, ["POST"], modelInjector);
426
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{index}/{hash}`, ["DELETE"], modelInjector);
427
- this.addRoute(`${prefix}/{uuid}/${name.attribute}/{index}/{hash}`, ["PUT"], modelInjector);
636
+ openapi = {
637
+ put: {
638
+ tags: [name],
639
+ summary: `Upload ${binary.attribute} of ${name} after challenge`,
640
+ description: `You will need to call the challenge method first to get a signed url to upload the content\nIf the data is already known then done is returned`,
641
+ operationId: `upload${name}${binary.attribute}`,
642
+ requestBody: {
643
+ content: {
644
+ "application/octet-stream": {
645
+ schema: {
646
+ type: "object",
647
+ required: ["hash", "challenge"],
648
+ properties: {
649
+ hash: {
650
+ type: "string",
651
+ description: "md5(data)"
652
+ },
653
+ challenge: {
654
+ type: "string",
655
+ description: "md5('Webda' + data)"
656
+ },
657
+ size: {
658
+ type: "number",
659
+ description: "Size of the data"
660
+ },
661
+ name: {
662
+ type: "string",
663
+ description: "Name of the file"
664
+ },
665
+ mimetype: {
666
+ type: "string",
667
+ description: "Mimetype of the file"
668
+ },
669
+ metadata: {
670
+ type: "object",
671
+ description: "Metadata to add to the binary"
672
+ }
673
+ }
674
+ }
675
+ }
676
+ }
677
+ },
678
+ responses: {
679
+ "200": {
680
+ description: "Operation success",
681
+ content: {
682
+ "application/octet-stream": {
683
+ schema: {
684
+ type: "object",
685
+ properties: {
686
+ done: {
687
+ type: "boolean"
688
+ },
689
+ url: {
690
+ type: "string"
691
+ },
692
+ method: {
693
+ type: "string"
694
+ },
695
+ md5: {
696
+ type: "string",
697
+ description: "base64 md5 of the data\nThe next request requires Content-MD5 to be added with this one along with Content-Type: 'application/octet-stream'"
698
+ }
699
+ }
700
+ }
701
+ }
702
+ }
703
+ },
704
+ "403": {
705
+ description: "You don't have permissions"
706
+ },
707
+ "404": {
708
+ description: "Unknown object"
709
+ }
710
+ }
711
+ }
712
+ };
713
+ this.addRoute(`${prefix}/{uuid}/${binary.attribute}`, ["PUT"], modelInjectorChallenge, openapi);
714
+ openapi = {
715
+ post: {
716
+ tags: [name],
717
+ summary: `Upload ${binary.attribute} of ${name} directly`,
718
+ description: `You can upload the content directly to the server\nThis is not the recommended way as it wont be able to optimize network traffic`,
719
+ operationId: `upload${name}${binary.attribute}`,
720
+ requestBody: {
721
+ content: {
722
+ "application/octet-stream": {
723
+ schema: {
724
+ type: "string",
725
+ format: "binary"
726
+ }
727
+ }
728
+ }
729
+ },
730
+ responses: {
731
+ "204": {
732
+ description: ""
733
+ },
734
+ "403": {
735
+ description: "You don't have permissions"
736
+ },
737
+ "404": {
738
+ description: "Object does not exist or attachment does not exist"
739
+ }
740
+ }
741
+ }
742
+ };
743
+ this.addRoute(`${prefix}/{uuid}/${binary.attribute}`, ["POST"], modelInjector, openapi);
744
+ let rootUrl = `${prefix}/{uuid}/${binary.attribute}`;
745
+ if (binary.cardinality === "MANY") {
746
+ rootUrl += "/{index}";
428
747
  }
748
+ openapi = {
749
+ get: {
750
+ tags: [name],
751
+ summary: `Download ${binary.attribute} of ${name}`,
752
+ operationId: `download${name}${binary.attribute}`,
753
+ responses: {
754
+ "200": {
755
+ description: "Operation success",
756
+ content: {
757
+ "application/octet-stream": {
758
+ schema: {
759
+ type: "string",
760
+ format: "binary"
761
+ }
762
+ }
763
+ }
764
+ },
765
+ "302": {
766
+ description: "Redirect to the binary"
767
+ },
768
+ "403": {
769
+ description: "You don't have permissions"
770
+ },
771
+ "404": {
772
+ description: "Unknown object"
773
+ }
774
+ }
775
+ }
776
+ };
777
+ this.addRoute(`${rootUrl}`, ["GET"], modelInjectorGet, openapi);
778
+ openapi = {
779
+ delete: {
780
+ tags: [name],
781
+ summary: `Delete ${binary.attribute} of ${name}`,
782
+ responses: {
783
+ "204": {
784
+ description: ""
785
+ },
786
+ "403": {
787
+ description: "You don't have permissions"
788
+ },
789
+ "404": {
790
+ description: "Object does not exist or attachment does not exist"
791
+ },
792
+ "412": {
793
+ description: "Provided hash does not match"
794
+ }
795
+ }
796
+ }
797
+ };
798
+ this.addRoute(`${rootUrl}/{hash}`, ["DELETE"], modelInjector, openapi);
799
+ openapi = {
800
+ put: {
801
+ tags: [name],
802
+ summary: `Update metadata of ${binary.attribute} of ${name}`,
803
+ operationId: `update${name}${binary.attribute}`,
804
+ requestBody: {
805
+ content: {
806
+ "application/json": {
807
+ schema: {
808
+ type: "object",
809
+ description: "Metadata to add to the binary",
810
+ additionalProperties: true
811
+ }
812
+ }
813
+ }
814
+ },
815
+ responses: {
816
+ "204": {
817
+ description: ""
818
+ },
819
+ "400": {
820
+ description: "Invalid input: metadata are limited to 4kb"
821
+ },
822
+ "403": {
823
+ description: "You don't have permissions"
824
+ },
825
+ "404": {
826
+ description: "Object does not exist or attachment does not exist"
827
+ },
828
+ "412": {
829
+ description: "Provided hash does not match"
830
+ }
831
+ }
832
+ }
833
+ };
834
+ this.addRoute(`${rootUrl}/{hash}`, ["PUT"], modelInjector, openapi);
835
+ openapi = {
836
+ get: {
837
+ tags: [name],
838
+ summary: `Get a signed url to download ${binary.attribute} of ${name} with a limited lifetime`,
839
+ responses: {
840
+ "200": {
841
+ description: "Operation success",
842
+ content: {
843
+ "application/json": {
844
+ schema: {
845
+ type: "object",
846
+ properties: {
847
+ Location: {
848
+ type: "string",
849
+ description: "Signed url to download the binary"
850
+ },
851
+ Map: {
852
+ $ref: "#/components/schemas/BinaryMap"
853
+ }
854
+ }
855
+ }
856
+ }
857
+ }
858
+ },
859
+ "403": {
860
+ description: "You don't have permissions"
861
+ },
862
+ "404": {
863
+ description: "Object does not exist or attachment does not exist"
864
+ }
865
+ }
866
+ }
867
+ };
868
+ this.addRoute(`${rootUrl}/url`, ["GET"], modelInjectorGet, openapi);
429
869
  });
430
870
  return true;
431
871
  }
@@ -1 +1 @@
1
- {"version":3,"file":"domainservice.js","sourceRoot":"","sources":["../../src/services/domainservice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domainservice.js","sourceRoot":"","sources":["../../src/services/domainservice.ts"],"names":[],"mappings":"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"}