@sasjs/api 0.7.2 → 0.8.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.
package/build/browser.js CHANGED
@@ -1,4 +1,4 @@
1
- /* @sasjs/api 0.7.2 - the SASjs Server API, for a service worker. https://github.com/sasjs/api */
1
+ /* @sasjs/api 0.8.0 - the SASjs Server API, for a service worker. https://github.com/sasjs/api */
2
2
  "use strict";
3
3
  var SASjsApi = (() => {
4
4
  var __defProp = Object.defineProperty;
@@ -3266,23 +3266,14 @@ var SASjsApi = (() => {
3266
3266
  return details;
3267
3267
  };
3268
3268
  const findBy = async (by) => by.uid !== void 0 ? store.userById(by.uid) : store.userByName(by.username ?? "");
3269
- const permissionDetails = async (permission) => {
3270
- const response = {
3271
- uid: permission.uid,
3272
- path: permission.path,
3273
- type: permission.type,
3274
- setting: permission.setting
3275
- };
3276
- if (permission.user) {
3277
- const user3 = await store.userById(permission.user);
3278
- if (user3) response.user = asUser(user3);
3279
- }
3280
- if (permission.group) {
3281
- const group = await store.groupById(permission.group);
3282
- if (group) response.group = await groupDetails(group);
3283
- }
3284
- return response;
3285
- };
3269
+ const permissionDetails = async (permission) => ({
3270
+ uid: permission.uid,
3271
+ path: permission.path,
3272
+ type: permission.type,
3273
+ setting: permission.setting,
3274
+ ...permission.user ? { user: permission.user } : {},
3275
+ ...permission.group ? { group: permission.group } : {}
3276
+ });
3286
3277
  return {
3287
3278
  async listUsers(caller) {
3288
3279
  await requireCaller(store, caller);
@@ -3583,7 +3574,7 @@ var SASjsApi = (() => {
3583
3574
  permissions: [
3584
3575
  {
3585
3576
  uid: "rule-routes",
3586
- path: "/SASjsApi/info",
3577
+ path: "/SASjsApi/drive/file",
3587
3578
  type: "Route",
3588
3579
  setting: "Grant",
3589
3580
  group: "group-data-controller"
@@ -5054,7 +5045,7 @@ var SASjsApi = (() => {
5054
5045
  request: {
5055
5046
  token: RESTRICTED,
5056
5047
  params: { username: "user2" },
5057
- body: { password: "wrong" }
5048
+ body: { password: "wrong123" }
5058
5049
  },
5059
5050
  expect: { status: 401, error: "Invalid password." }
5060
5051
  },
@@ -5363,55 +5354,24 @@ var SASjsApi = (() => {
5363
5354
  body: [
5364
5355
  {
5365
5356
  uid: "rule-routes",
5366
- path: "/SASjsApi/info",
5357
+ path: "/SASjsApi/drive/file",
5367
5358
  type: "Route",
5368
5359
  setting: "Grant",
5369
- group: {
5370
- uid: "group-data-controller",
5371
- name: "DCGroup",
5372
- description: "Data Controller users",
5373
- isActive: true,
5374
- users: [
5375
- {
5376
- uid: RESTRICTED_UID,
5377
- username: "user2",
5378
- displayName: "Demo User",
5379
- isAdmin: false
5380
- }
5381
- ]
5382
- }
5360
+ group: "group-data-controller"
5383
5361
  },
5384
5362
  {
5385
5363
  uid: "rule-execute",
5386
5364
  path: "/SASjsApi/stp/execute",
5387
5365
  type: "Route",
5388
5366
  setting: "Grant",
5389
- group: {
5390
- uid: "group-data-controller",
5391
- name: "DCGroup",
5392
- description: "Data Controller users",
5393
- isActive: true,
5394
- users: [
5395
- {
5396
- uid: RESTRICTED_UID,
5397
- username: "user2",
5398
- displayName: "Demo User",
5399
- isAdmin: false
5400
- }
5401
- ]
5402
- }
5367
+ group: "group-data-controller"
5403
5368
  },
5404
5369
  {
5405
5370
  uid: "rule-code",
5406
5371
  path: "/SASjsApi/code/execute",
5407
5372
  type: "Route",
5408
5373
  setting: "Deny",
5409
- user: {
5410
- uid: RESTRICTED_UID,
5411
- username: "user2",
5412
- displayName: "Demo User",
5413
- isAdmin: false
5414
- }
5374
+ user: RESTRICTED_UID
5415
5375
  }
5416
5376
  ]
5417
5377
  }
@@ -5427,55 +5387,24 @@ var SASjsApi = (() => {
5427
5387
  body: [
5428
5388
  {
5429
5389
  uid: "rule-routes",
5430
- path: "/SASjsApi/info",
5390
+ path: "/SASjsApi/drive/file",
5431
5391
  type: "Route",
5432
5392
  setting: "Grant",
5433
- group: {
5434
- uid: "group-data-controller",
5435
- name: "DCGroup",
5436
- description: "Data Controller users",
5437
- isActive: true,
5438
- users: [
5439
- {
5440
- uid: RESTRICTED_UID,
5441
- username: "user2",
5442
- displayName: "Demo User",
5443
- isAdmin: false
5444
- }
5445
- ]
5446
- }
5393
+ group: "group-data-controller"
5447
5394
  },
5448
5395
  {
5449
5396
  uid: "rule-execute",
5450
5397
  path: "/SASjsApi/stp/execute",
5451
5398
  type: "Route",
5452
5399
  setting: "Grant",
5453
- group: {
5454
- uid: "group-data-controller",
5455
- name: "DCGroup",
5456
- description: "Data Controller users",
5457
- isActive: true,
5458
- users: [
5459
- {
5460
- uid: RESTRICTED_UID,
5461
- username: "user2",
5462
- displayName: "Demo User",
5463
- isAdmin: false
5464
- }
5465
- ]
5466
- }
5400
+ group: "group-data-controller"
5467
5401
  },
5468
5402
  {
5469
5403
  uid: "rule-code",
5470
5404
  path: "/SASjsApi/code/execute",
5471
5405
  type: "Route",
5472
5406
  setting: "Deny",
5473
- user: {
5474
- uid: RESTRICTED_UID,
5475
- username: "user2",
5476
- displayName: "Demo User",
5477
- isAdmin: false
5478
- }
5407
+ user: RESTRICTED_UID
5479
5408
  }
5480
5409
  ]
5481
5410
  }
@@ -5496,7 +5425,7 @@ var SASjsApi = (() => {
5496
5425
  request: {
5497
5426
  token: ADMIN,
5498
5427
  body: {
5499
- path: "/SASjsApi/code/lint",
5428
+ path: "/SASjsApi/drive/folder",
5500
5429
  type: "Route",
5501
5430
  setting: "Grant",
5502
5431
  principalType: "user",
@@ -5505,7 +5434,7 @@ var SASjsApi = (() => {
5505
5434
  },
5506
5435
  expect: {
5507
5436
  status: 200,
5508
- partial: { path: "/SASjsApi/code/lint", setting: "Grant" }
5437
+ partial: { path: "/SASjsApi/drive/folder", setting: "Grant" }
5509
5438
  }
5510
5439
  },
5511
5440
  {
@@ -5516,7 +5445,7 @@ var SASjsApi = (() => {
5516
5445
  request: {
5517
5446
  token: ADMIN,
5518
5447
  body: {
5519
- path: "/SASjsApi/code/lint",
5448
+ path: "/SASjsApi/drive/rename",
5520
5449
  type: "Route",
5521
5450
  setting: "Grant",
5522
5451
  principalType: "group",
@@ -5526,9 +5455,9 @@ var SASjsApi = (() => {
5526
5455
  expect: {
5527
5456
  status: 200,
5528
5457
  partial: {
5529
- path: "/SASjsApi/code/lint",
5458
+ path: "/SASjsApi/drive/rename",
5530
5459
  setting: "Grant",
5531
- group: { uid: "group-data-controller", name: "DCGroup" }
5460
+ group: "group-data-controller"
5532
5461
  }
5533
5462
  }
5534
5463
  },
@@ -5540,7 +5469,7 @@ var SASjsApi = (() => {
5540
5469
  request: {
5541
5470
  token: ADMIN,
5542
5471
  body: {
5543
- path: "/SASjsApi/code/lint",
5472
+ path: "/SASjsApi/drive/deploy",
5544
5473
  type: "Route",
5545
5474
  setting: "Grant",
5546
5475
  principalType: "role",
@@ -5560,7 +5489,7 @@ var SASjsApi = (() => {
5560
5489
  request: {
5561
5490
  token: ADMIN,
5562
5491
  body: {
5563
- path: "/SASjsApi/code/lint",
5492
+ path: "/SASjsApi/drive/folder",
5564
5493
  type: "Route",
5565
5494
  setting: "Grant",
5566
5495
  principalType: "user",
@@ -5580,7 +5509,7 @@ var SASjsApi = (() => {
5580
5509
  request: {
5581
5510
  token: RESTRICTED,
5582
5511
  body: {
5583
- path: "/SASjsApi/code/lint",
5512
+ path: "/SASjsApi/drive/folder",
5584
5513
  type: "Route",
5585
5514
  setting: "Grant",
5586
5515
  principalType: "user",
@@ -5597,7 +5526,7 @@ var SASjsApi = (() => {
5597
5526
  request: {
5598
5527
  token: ADMIN,
5599
5528
  body: {
5600
- path: "/SASjsApi/code/lint",
5529
+ path: "/SASjsApi/drive/rename",
5601
5530
  type: "Route",
5602
5531
  setting: "Grant",
5603
5532
  principalType: "group",
@@ -5614,7 +5543,7 @@ var SASjsApi = (() => {
5614
5543
  request: {
5615
5544
  token: ADMIN,
5616
5545
  body: {
5617
- path: "/SASjsApi/info",
5546
+ path: "/SASjsApi/drive/file",
5618
5547
  type: "Route",
5619
5548
  setting: "Grant",
5620
5549
  principalType: "group",
@@ -404,7 +404,7 @@ exports.RECORD_CORPUS = [
404
404
  request: {
405
405
  token: RESTRICTED,
406
406
  params: { username: 'user2' },
407
- body: { password: 'wrong' }
407
+ body: { password: 'wrong123' }
408
408
  },
409
409
  expect: { status: 401, error: 'Invalid password.' }
410
410
  },
@@ -713,55 +713,24 @@ exports.RECORD_CORPUS = [
713
713
  body: [
714
714
  {
715
715
  uid: 'rule-routes',
716
- path: '/SASjsApi/info',
716
+ path: '/SASjsApi/drive/file',
717
717
  type: 'Route',
718
718
  setting: 'Grant',
719
- group: {
720
- uid: 'group-data-controller',
721
- name: 'DCGroup',
722
- description: 'Data Controller users',
723
- isActive: true,
724
- users: [
725
- {
726
- uid: RESTRICTED_UID,
727
- username: 'user2',
728
- displayName: 'Demo User',
729
- isAdmin: false
730
- }
731
- ]
732
- }
719
+ group: 'group-data-controller'
733
720
  },
734
721
  {
735
722
  uid: 'rule-execute',
736
723
  path: '/SASjsApi/stp/execute',
737
724
  type: 'Route',
738
725
  setting: 'Grant',
739
- group: {
740
- uid: 'group-data-controller',
741
- name: 'DCGroup',
742
- description: 'Data Controller users',
743
- isActive: true,
744
- users: [
745
- {
746
- uid: RESTRICTED_UID,
747
- username: 'user2',
748
- displayName: 'Demo User',
749
- isAdmin: false
750
- }
751
- ]
752
- }
726
+ group: 'group-data-controller'
753
727
  },
754
728
  {
755
729
  uid: 'rule-code',
756
730
  path: '/SASjsApi/code/execute',
757
731
  type: 'Route',
758
732
  setting: 'Deny',
759
- user: {
760
- uid: RESTRICTED_UID,
761
- username: 'user2',
762
- displayName: 'Demo User',
763
- isAdmin: false
764
- }
733
+ user: RESTRICTED_UID
765
734
  }
766
735
  ]
767
736
  }
@@ -777,55 +746,24 @@ exports.RECORD_CORPUS = [
777
746
  body: [
778
747
  {
779
748
  uid: 'rule-routes',
780
- path: '/SASjsApi/info',
749
+ path: '/SASjsApi/drive/file',
781
750
  type: 'Route',
782
751
  setting: 'Grant',
783
- group: {
784
- uid: 'group-data-controller',
785
- name: 'DCGroup',
786
- description: 'Data Controller users',
787
- isActive: true,
788
- users: [
789
- {
790
- uid: RESTRICTED_UID,
791
- username: 'user2',
792
- displayName: 'Demo User',
793
- isAdmin: false
794
- }
795
- ]
796
- }
752
+ group: 'group-data-controller'
797
753
  },
798
754
  {
799
755
  uid: 'rule-execute',
800
756
  path: '/SASjsApi/stp/execute',
801
757
  type: 'Route',
802
758
  setting: 'Grant',
803
- group: {
804
- uid: 'group-data-controller',
805
- name: 'DCGroup',
806
- description: 'Data Controller users',
807
- isActive: true,
808
- users: [
809
- {
810
- uid: RESTRICTED_UID,
811
- username: 'user2',
812
- displayName: 'Demo User',
813
- isAdmin: false
814
- }
815
- ]
816
- }
759
+ group: 'group-data-controller'
817
760
  },
818
761
  {
819
762
  uid: 'rule-code',
820
763
  path: '/SASjsApi/code/execute',
821
764
  type: 'Route',
822
765
  setting: 'Deny',
823
- user: {
824
- uid: RESTRICTED_UID,
825
- username: 'user2',
826
- displayName: 'Demo User',
827
- isAdmin: false
828
- }
766
+ user: RESTRICTED_UID
829
767
  }
830
768
  ]
831
769
  }
@@ -846,7 +784,7 @@ exports.RECORD_CORPUS = [
846
784
  request: {
847
785
  token: ADMIN,
848
786
  body: {
849
- path: '/SASjsApi/code/lint',
787
+ path: '/SASjsApi/drive/folder',
850
788
  type: 'Route',
851
789
  setting: 'Grant',
852
790
  principalType: 'user',
@@ -855,7 +793,7 @@ exports.RECORD_CORPUS = [
855
793
  },
856
794
  expect: {
857
795
  status: 200,
858
- partial: { path: '/SASjsApi/code/lint', setting: 'Grant' }
796
+ partial: { path: '/SASjsApi/drive/folder', setting: 'Grant' }
859
797
  }
860
798
  },
861
799
  {
@@ -866,7 +804,7 @@ exports.RECORD_CORPUS = [
866
804
  request: {
867
805
  token: ADMIN,
868
806
  body: {
869
- path: '/SASjsApi/code/lint',
807
+ path: '/SASjsApi/drive/rename',
870
808
  type: 'Route',
871
809
  setting: 'Grant',
872
810
  principalType: 'group',
@@ -876,9 +814,9 @@ exports.RECORD_CORPUS = [
876
814
  expect: {
877
815
  status: 200,
878
816
  partial: {
879
- path: '/SASjsApi/code/lint',
817
+ path: '/SASjsApi/drive/rename',
880
818
  setting: 'Grant',
881
- group: { uid: 'group-data-controller', name: 'DCGroup' }
819
+ group: 'group-data-controller'
882
820
  }
883
821
  }
884
822
  },
@@ -890,7 +828,7 @@ exports.RECORD_CORPUS = [
890
828
  request: {
891
829
  token: ADMIN,
892
830
  body: {
893
- path: '/SASjsApi/code/lint',
831
+ path: '/SASjsApi/drive/deploy',
894
832
  type: 'Route',
895
833
  setting: 'Grant',
896
834
  principalType: 'role',
@@ -910,7 +848,7 @@ exports.RECORD_CORPUS = [
910
848
  request: {
911
849
  token: ADMIN,
912
850
  body: {
913
- path: '/SASjsApi/code/lint',
851
+ path: '/SASjsApi/drive/folder',
914
852
  type: 'Route',
915
853
  setting: 'Grant',
916
854
  principalType: 'user',
@@ -930,7 +868,7 @@ exports.RECORD_CORPUS = [
930
868
  request: {
931
869
  token: RESTRICTED,
932
870
  body: {
933
- path: '/SASjsApi/code/lint',
871
+ path: '/SASjsApi/drive/folder',
934
872
  type: 'Route',
935
873
  setting: 'Grant',
936
874
  principalType: 'user',
@@ -947,7 +885,7 @@ exports.RECORD_CORPUS = [
947
885
  request: {
948
886
  token: ADMIN,
949
887
  body: {
950
- path: '/SASjsApi/code/lint',
888
+ path: '/SASjsApi/drive/rename',
951
889
  type: 'Route',
952
890
  setting: 'Grant',
953
891
  principalType: 'group',
@@ -964,7 +902,7 @@ exports.RECORD_CORPUS = [
964
902
  request: {
965
903
  token: ADMIN,
966
904
  body: {
967
- path: '/SASjsApi/info',
905
+ path: '/SASjsApi/drive/file',
968
906
  type: 'Route',
969
907
  setting: 'Grant',
970
908
  principalType: 'group',
@@ -57,7 +57,7 @@ exports.DEFAULT_IDENTITY = {
57
57
  permissions: [
58
58
  {
59
59
  uid: 'rule-routes',
60
- path: '/SASjsApi/info',
60
+ path: '/SASjsApi/drive/file',
61
61
  type: 'Route',
62
62
  setting: 'Grant',
63
63
  group: 'group-data-controller'
@@ -113,25 +113,14 @@ const createRecordService = (store) => {
113
113
  const findBy = async (by) => by.uid !== undefined
114
114
  ? store.userById(by.uid)
115
115
  : store.userByName(by.username ?? '');
116
- const permissionDetails = async (permission) => {
117
- const response = {
118
- uid: permission.uid,
119
- path: permission.path,
120
- type: permission.type,
121
- setting: permission.setting
122
- };
123
- if (permission.user) {
124
- const user = await store.userById(permission.user);
125
- if (user)
126
- response.user = asUser(user);
127
- }
128
- if (permission.group) {
129
- const group = await store.groupById(permission.group);
130
- if (group)
131
- response.group = await groupDetails(group);
132
- }
133
- return response;
134
- };
116
+ const permissionDetails = async (permission) => ({
117
+ uid: permission.uid,
118
+ path: permission.path,
119
+ type: permission.type,
120
+ setting: permission.setting,
121
+ ...(permission.user ? { user: permission.user } : {}),
122
+ ...(permission.group ? { group: permission.group } : {})
123
+ });
135
124
  return {
136
125
  async listUsers(caller) {
137
126
  await requireCaller(store, caller);
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/corpus/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAkB/B,qFAAqF;AACrF,eAAO,MAAM,eAAe,EAAE,eAG7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA0C9B,CAAA;AAOD,eAAO,MAAM,aAAa,EAAE,UAAU,EA0oCrC,CAAA"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/corpus/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAkB/B,qFAAqF;AACrF,eAAO,MAAM,eAAe,EAAE,eAG7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA0C9B,CAAA;AAOD,eAAO,MAAM,aAAa,EAAE,UAAU,EA4kCrC,CAAA"}
@@ -401,7 +401,7 @@ export const RECORD_CORPUS = [
401
401
  request: {
402
402
  token: RESTRICTED,
403
403
  params: { username: 'user2' },
404
- body: { password: 'wrong' }
404
+ body: { password: 'wrong123' }
405
405
  },
406
406
  expect: { status: 401, error: 'Invalid password.' }
407
407
  },
@@ -710,55 +710,24 @@ export const RECORD_CORPUS = [
710
710
  body: [
711
711
  {
712
712
  uid: 'rule-routes',
713
- path: '/SASjsApi/info',
713
+ path: '/SASjsApi/drive/file',
714
714
  type: 'Route',
715
715
  setting: 'Grant',
716
- group: {
717
- uid: 'group-data-controller',
718
- name: 'DCGroup',
719
- description: 'Data Controller users',
720
- isActive: true,
721
- users: [
722
- {
723
- uid: RESTRICTED_UID,
724
- username: 'user2',
725
- displayName: 'Demo User',
726
- isAdmin: false
727
- }
728
- ]
729
- }
716
+ group: 'group-data-controller'
730
717
  },
731
718
  {
732
719
  uid: 'rule-execute',
733
720
  path: '/SASjsApi/stp/execute',
734
721
  type: 'Route',
735
722
  setting: 'Grant',
736
- group: {
737
- uid: 'group-data-controller',
738
- name: 'DCGroup',
739
- description: 'Data Controller users',
740
- isActive: true,
741
- users: [
742
- {
743
- uid: RESTRICTED_UID,
744
- username: 'user2',
745
- displayName: 'Demo User',
746
- isAdmin: false
747
- }
748
- ]
749
- }
723
+ group: 'group-data-controller'
750
724
  },
751
725
  {
752
726
  uid: 'rule-code',
753
727
  path: '/SASjsApi/code/execute',
754
728
  type: 'Route',
755
729
  setting: 'Deny',
756
- user: {
757
- uid: RESTRICTED_UID,
758
- username: 'user2',
759
- displayName: 'Demo User',
760
- isAdmin: false
761
- }
730
+ user: RESTRICTED_UID
762
731
  }
763
732
  ]
764
733
  }
@@ -774,55 +743,24 @@ export const RECORD_CORPUS = [
774
743
  body: [
775
744
  {
776
745
  uid: 'rule-routes',
777
- path: '/SASjsApi/info',
746
+ path: '/SASjsApi/drive/file',
778
747
  type: 'Route',
779
748
  setting: 'Grant',
780
- group: {
781
- uid: 'group-data-controller',
782
- name: 'DCGroup',
783
- description: 'Data Controller users',
784
- isActive: true,
785
- users: [
786
- {
787
- uid: RESTRICTED_UID,
788
- username: 'user2',
789
- displayName: 'Demo User',
790
- isAdmin: false
791
- }
792
- ]
793
- }
749
+ group: 'group-data-controller'
794
750
  },
795
751
  {
796
752
  uid: 'rule-execute',
797
753
  path: '/SASjsApi/stp/execute',
798
754
  type: 'Route',
799
755
  setting: 'Grant',
800
- group: {
801
- uid: 'group-data-controller',
802
- name: 'DCGroup',
803
- description: 'Data Controller users',
804
- isActive: true,
805
- users: [
806
- {
807
- uid: RESTRICTED_UID,
808
- username: 'user2',
809
- displayName: 'Demo User',
810
- isAdmin: false
811
- }
812
- ]
813
- }
756
+ group: 'group-data-controller'
814
757
  },
815
758
  {
816
759
  uid: 'rule-code',
817
760
  path: '/SASjsApi/code/execute',
818
761
  type: 'Route',
819
762
  setting: 'Deny',
820
- user: {
821
- uid: RESTRICTED_UID,
822
- username: 'user2',
823
- displayName: 'Demo User',
824
- isAdmin: false
825
- }
763
+ user: RESTRICTED_UID
826
764
  }
827
765
  ]
828
766
  }
@@ -843,7 +781,7 @@ export const RECORD_CORPUS = [
843
781
  request: {
844
782
  token: ADMIN,
845
783
  body: {
846
- path: '/SASjsApi/code/lint',
784
+ path: '/SASjsApi/drive/folder',
847
785
  type: 'Route',
848
786
  setting: 'Grant',
849
787
  principalType: 'user',
@@ -852,7 +790,7 @@ export const RECORD_CORPUS = [
852
790
  },
853
791
  expect: {
854
792
  status: 200,
855
- partial: { path: '/SASjsApi/code/lint', setting: 'Grant' }
793
+ partial: { path: '/SASjsApi/drive/folder', setting: 'Grant' }
856
794
  }
857
795
  },
858
796
  {
@@ -863,7 +801,7 @@ export const RECORD_CORPUS = [
863
801
  request: {
864
802
  token: ADMIN,
865
803
  body: {
866
- path: '/SASjsApi/code/lint',
804
+ path: '/SASjsApi/drive/rename',
867
805
  type: 'Route',
868
806
  setting: 'Grant',
869
807
  principalType: 'group',
@@ -873,9 +811,9 @@ export const RECORD_CORPUS = [
873
811
  expect: {
874
812
  status: 200,
875
813
  partial: {
876
- path: '/SASjsApi/code/lint',
814
+ path: '/SASjsApi/drive/rename',
877
815
  setting: 'Grant',
878
- group: { uid: 'group-data-controller', name: 'DCGroup' }
816
+ group: 'group-data-controller'
879
817
  }
880
818
  }
881
819
  },
@@ -887,7 +825,7 @@ export const RECORD_CORPUS = [
887
825
  request: {
888
826
  token: ADMIN,
889
827
  body: {
890
- path: '/SASjsApi/code/lint',
828
+ path: '/SASjsApi/drive/deploy',
891
829
  type: 'Route',
892
830
  setting: 'Grant',
893
831
  principalType: 'role',
@@ -907,7 +845,7 @@ export const RECORD_CORPUS = [
907
845
  request: {
908
846
  token: ADMIN,
909
847
  body: {
910
- path: '/SASjsApi/code/lint',
848
+ path: '/SASjsApi/drive/folder',
911
849
  type: 'Route',
912
850
  setting: 'Grant',
913
851
  principalType: 'user',
@@ -927,7 +865,7 @@ export const RECORD_CORPUS = [
927
865
  request: {
928
866
  token: RESTRICTED,
929
867
  body: {
930
- path: '/SASjsApi/code/lint',
868
+ path: '/SASjsApi/drive/folder',
931
869
  type: 'Route',
932
870
  setting: 'Grant',
933
871
  principalType: 'user',
@@ -944,7 +882,7 @@ export const RECORD_CORPUS = [
944
882
  request: {
945
883
  token: ADMIN,
946
884
  body: {
947
- path: '/SASjsApi/code/lint',
885
+ path: '/SASjsApi/drive/rename',
948
886
  type: 'Route',
949
887
  setting: 'Grant',
950
888
  principalType: 'group',
@@ -961,7 +899,7 @@ export const RECORD_CORPUS = [
961
899
  request: {
962
900
  token: ADMIN,
963
901
  body: {
964
- path: '/SASjsApi/info',
902
+ path: '/SASjsApi/drive/file',
965
903
  type: 'Route',
966
904
  setting: 'Grant',
967
905
  principalType: 'group',
@@ -54,7 +54,7 @@ export const DEFAULT_IDENTITY = {
54
54
  permissions: [
55
55
  {
56
56
  uid: 'rule-routes',
57
- path: '/SASjsApi/info',
57
+ path: '/SASjsApi/drive/file',
58
58
  type: 'Route',
59
59
  setting: 'Grant',
60
60
  group: 'group-data-controller'
@@ -25,13 +25,24 @@ export interface GroupDetailsResponse extends GroupResponse {
25
25
  isActive: boolean;
26
26
  users: UserResponse[];
27
27
  }
28
+ /**
29
+ * A permission rule as the routes report one.
30
+ *
31
+ * The principal is the identifier, not the whole account: a rule is a row in a
32
+ * table, and a host on any database can produce `user` or `group` as a uid
33
+ * without a join or a populate step. A client that wants the name asks for the
34
+ * account it names, which it can do whether the store is Mongo, a browser's
35
+ * IndexedDB or a file.
36
+ */
28
37
  export interface PermissionResponse {
29
38
  uid: string;
30
39
  path: string;
31
40
  type: string;
32
41
  setting: string;
33
- user?: UserResponse;
34
- group?: GroupDetailsResponse;
42
+ /** The uid of the account the rule is assigned to, when it is a user's. */
43
+ user?: string;
44
+ /** The uid of the group the rule is assigned to, when it is a group's. */
45
+ group?: string;
35
46
  }
36
47
  export interface RecordService {
37
48
  listUsers(caller: Subject | undefined): Promise<UserResponse[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/identity/records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../src/identity/records.ts"],"names":[],"mappings":"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"}
@@ -109,25 +109,14 @@ export const createRecordService = (store) => {
109
109
  const findBy = async (by) => by.uid !== undefined
110
110
  ? store.userById(by.uid)
111
111
  : store.userByName(by.username ?? '');
112
- const permissionDetails = async (permission) => {
113
- const response = {
114
- uid: permission.uid,
115
- path: permission.path,
116
- type: permission.type,
117
- setting: permission.setting
118
- };
119
- if (permission.user) {
120
- const user = await store.userById(permission.user);
121
- if (user)
122
- response.user = asUser(user);
123
- }
124
- if (permission.group) {
125
- const group = await store.groupById(permission.group);
126
- if (group)
127
- response.group = await groupDetails(group);
128
- }
129
- return response;
130
- };
112
+ const permissionDetails = async (permission) => ({
113
+ uid: permission.uid,
114
+ path: permission.path,
115
+ type: permission.type,
116
+ setting: permission.setting,
117
+ ...(permission.user ? { user: permission.user } : {}),
118
+ ...(permission.group ? { group: permission.group } : {})
119
+ });
131
120
  return {
132
121
  async listUsers(caller) {
133
122
  await requireCaller(store, caller);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sasjs/api",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "The SASjs Server API, described once - a generated route table, the services behind it, and the conformance corpus both hosts run",
5
5
  "license": "MIT",
6
6
  "author": "SASjs",