@sasjs/api 0.7.1 → 0.7.2

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.1 - the SASjs Server API, for a service worker. https://github.com/sasjs/api */
1
+ /* @sasjs/api 0.7.2 - 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;
@@ -1736,8 +1736,8 @@ var SASjsApi = (() => {
1736
1736
  requestBodies: [],
1737
1737
  responses: [
1738
1738
  {
1739
- status: 204,
1740
- description: "No content"
1739
+ status: 200,
1740
+ description: "Permission Deleted!"
1741
1741
  },
1742
1742
  {
1743
1743
  status: 401,
@@ -2080,8 +2080,8 @@ var SASjsApi = (() => {
2080
2080
  requestBodies: ["application/json"],
2081
2081
  responses: [
2082
2082
  {
2083
- status: 204,
2084
- description: "No content"
2083
+ status: 200,
2084
+ description: "Account Deleted!"
2085
2085
  },
2086
2086
  {
2087
2087
  status: 401,
@@ -2220,8 +2220,8 @@ var SASjsApi = (() => {
2220
2220
  requestBodies: ["application/json"],
2221
2221
  responses: [
2222
2222
  {
2223
- status: 204,
2224
- description: "No content"
2223
+ status: 200,
2224
+ description: "Account Deleted!"
2225
2225
  },
2226
2226
  {
2227
2227
  status: 401,
@@ -2626,13 +2626,6 @@ var SASjsApi = (() => {
2626
2626
  },
2627
2627
  "POST /SASjsApi/permission": { implemented: true },
2628
2628
  "PATCH /SASjsApi/permission/{uid}": { implemented: true },
2629
- // The three deletes answer 204 here and 200 on the wire: the server's route
2630
- // handlers send `res.status(200).send('Account Deleted!')` and
2631
- // `'Permission Deleted!'`, while tsoa emitted 204 for a void handler, so the
2632
- // document understates the status. Correcting it is a decorator in
2633
- // sasjs/server (`@SuccessResponse('200', ...)`), and this package follows the
2634
- // document until that release lands - a local 200 would fail the schema check
2635
- // that keeps this table honest.
2636
2629
  "DELETE /SASjsApi/permission/{uid}": { implemented: true },
2637
2630
  // Session - the caller's own session, then the record behind a triggered one
2638
2631
  "GET /SASjsApi/session": {
@@ -2960,19 +2953,23 @@ var SASjsApi = (() => {
2960
2953
  )
2961
2954
  };
2962
2955
  case "DELETE /SASjsApi/user/{uid}":
2963
- await required().deleteUser(
2964
- await caller(),
2965
- { uid: String(params.uid ?? "") },
2966
- { password: body.password }
2967
- );
2968
- return { status: 204 };
2956
+ return {
2957
+ status: 200,
2958
+ body: await required().deleteUser(
2959
+ await caller(),
2960
+ { uid: String(params.uid ?? "") },
2961
+ { password: body.password }
2962
+ )
2963
+ };
2969
2964
  case "DELETE /SASjsApi/user/by/username/{username}":
2970
- await required().deleteUser(
2971
- await caller(),
2972
- { username: String(params.username ?? "") },
2973
- { password: body.password }
2974
- );
2975
- return { status: 204 };
2965
+ return {
2966
+ status: 200,
2967
+ body: await required().deleteUser(
2968
+ await caller(),
2969
+ { username: String(params.username ?? "") },
2970
+ { password: body.password }
2971
+ )
2972
+ };
2976
2973
  case "GET /SASjsApi/group":
2977
2974
  return { status: 200, body: await required().listGroups(await caller()) };
2978
2975
  case "GET /SASjsApi/group/{uid}":
@@ -3045,11 +3042,13 @@ var SASjsApi = (() => {
3045
3042
  )
3046
3043
  };
3047
3044
  case "DELETE /SASjsApi/permission/{uid}":
3048
- await required().deletePermission(
3049
- await caller(),
3050
- String(params.uid ?? "")
3051
- );
3052
- return { status: 204 };
3045
+ return {
3046
+ status: 200,
3047
+ body: await required().deletePermission(
3048
+ await caller(),
3049
+ String(params.uid ?? "")
3050
+ )
3051
+ };
3053
3052
  case "GET /SASjsApi/client":
3054
3053
  return { status: 200, body: await required().listClients(await caller()) };
3055
3054
  case "POST /SASjsApi/client":
@@ -3358,6 +3357,7 @@ var SASjsApi = (() => {
3358
3357
  throw new ApiError(401, "Invalid password.");
3359
3358
  }
3360
3359
  await store.deleteUser(current.uid);
3360
+ return "Account Deleted!";
3361
3361
  },
3362
3362
  async listGroups(caller) {
3363
3363
  await requireCaller(store, caller);
@@ -3505,6 +3505,7 @@ var SASjsApi = (() => {
3505
3505
  if (!await store.permissionById(uid))
3506
3506
  throw new ApiError(404, "Permission not found.");
3507
3507
  await store.deletePermission(uid);
3508
+ return "Permission Deleted!";
3508
3509
  },
3509
3510
  async listClients(caller) {
3510
3511
  await requireAdmin(store, caller);
@@ -5015,7 +5016,7 @@ var SASjsApi = (() => {
5015
5016
  description: "deletes an account as an administrator, without a password",
5016
5017
  identity: ADMIN_SIGNED_IN,
5017
5018
  request: { token: ADMIN, params: { uid: RESTRICTED_UID }, body: {} },
5018
- expect: { status: 204 }
5019
+ expect: { status: 200, body: "Account Deleted!" }
5019
5020
  },
5020
5021
  {
5021
5022
  id: "delete-user-not-admin",
@@ -5043,7 +5044,7 @@ var SASjsApi = (() => {
5043
5044
  params: { username: "user2" },
5044
5045
  body: {}
5045
5046
  },
5046
- expect: { status: 204 }
5047
+ expect: { status: 200, body: "Account Deleted!" }
5047
5048
  },
5048
5049
  {
5049
5050
  id: "delete-user-by-username-wrong-password",
@@ -5687,7 +5688,7 @@ var SASjsApi = (() => {
5687
5688
  description: "deletes a rule",
5688
5689
  identity: ADMIN_SIGNED_IN,
5689
5690
  request: { token: ADMIN, params: { uid: "rule-code" } },
5690
- expect: { status: 204 }
5691
+ expect: { status: 200, body: "Permission Deleted!" }
5691
5692
  },
5692
5693
  {
5693
5694
  id: "delete-permission-not-admin",
@@ -366,7 +366,7 @@ exports.RECORD_CORPUS = [
366
366
  description: 'deletes an account as an administrator, without a password',
367
367
  identity: exports.ADMIN_SIGNED_IN,
368
368
  request: { token: ADMIN, params: { uid: RESTRICTED_UID }, body: {} },
369
- expect: { status: 204 }
369
+ expect: { status: 200, body: 'Account Deleted!' }
370
370
  },
371
371
  {
372
372
  id: 'delete-user-not-admin',
@@ -394,7 +394,7 @@ exports.RECORD_CORPUS = [
394
394
  params: { username: 'user2' },
395
395
  body: {}
396
396
  },
397
- expect: { status: 204 }
397
+ expect: { status: 200, body: 'Account Deleted!' }
398
398
  },
399
399
  {
400
400
  id: 'delete-user-by-username-wrong-password',
@@ -1038,7 +1038,7 @@ exports.RECORD_CORPUS = [
1038
1038
  description: 'deletes a rule',
1039
1039
  identity: exports.ADMIN_SIGNED_IN,
1040
1040
  request: { token: ADMIN, params: { uid: 'rule-code' } },
1041
- expect: { status: 204 }
1041
+ expect: { status: 200, body: 'Permission Deleted!' }
1042
1042
  },
1043
1043
  {
1044
1044
  id: 'delete-permission-not-admin',
@@ -210,11 +210,15 @@ const dispatch = async (services, routeId, request = {}) => {
210
210
  body: await required().updateUser(await caller(), { username: String(params.username ?? '') }, body)
211
211
  };
212
212
  case 'DELETE /SASjsApi/user/{uid}':
213
- await required().deleteUser(await caller(), { uid: String(params.uid ?? '') }, { password: body.password });
214
- return { status: 204 };
213
+ return {
214
+ status: 200,
215
+ body: await required().deleteUser(await caller(), { uid: String(params.uid ?? '') }, { password: body.password })
216
+ };
215
217
  case 'DELETE /SASjsApi/user/by/username/{username}':
216
- await required().deleteUser(await caller(), { username: String(params.username ?? '') }, { password: body.password });
217
- return { status: 204 };
218
+ return {
219
+ status: 200,
220
+ body: await required().deleteUser(await caller(), { username: String(params.username ?? '') }, { password: body.password })
221
+ };
218
222
  case 'GET /SASjsApi/group':
219
223
  return { status: 200, body: await required().listGroups(await caller()) };
220
224
  case 'GET /SASjsApi/group/{uid}':
@@ -277,8 +281,10 @@ const dispatch = async (services, routeId, request = {}) => {
277
281
  body: await required().updatePermission(await caller(), String(params.uid ?? ''), { setting: String(body.setting ?? '') })
278
282
  };
279
283
  case 'DELETE /SASjsApi/permission/{uid}':
280
- await required().deletePermission(await caller(), String(params.uid ?? ''));
281
- return { status: 204 };
284
+ return {
285
+ status: 200,
286
+ body: await required().deletePermission(await caller(), String(params.uid ?? ''))
287
+ };
282
288
  case 'GET /SASjsApi/client':
283
289
  return { status: 200, body: await required().listClients(await caller()) };
284
290
  case 'POST /SASjsApi/client':
@@ -223,6 +223,9 @@ const createRecordService = (store) => {
223
223
  throw new types_js_1.ApiError(401, 'Invalid password.');
224
224
  }
225
225
  await store.deleteUser(current.uid);
226
+ // the server's route sends this string itself; the document carries it as
227
+ // the 200 description, so it is the answer and not an extra
228
+ return 'Account Deleted!';
226
229
  },
227
230
  async listGroups(caller) {
228
231
  await requireCaller(store, caller);
@@ -360,6 +363,7 @@ const createRecordService = (store) => {
360
363
  if (!(await store.permissionById(uid)))
361
364
  throw new types_js_1.ApiError(404, 'Permission not found.');
362
365
  await store.deletePermission(uid);
366
+ return 'Permission Deleted!';
363
367
  },
364
368
  async listClients(caller) {
365
369
  await requireAdmin(store, caller);
@@ -1198,8 +1198,8 @@ exports.GENERATED_ROUTES = [
1198
1198
  requestBodies: [],
1199
1199
  responses: [
1200
1200
  {
1201
- status: 204,
1202
- description: 'No content'
1201
+ status: 200,
1202
+ description: 'Permission Deleted!'
1203
1203
  },
1204
1204
  {
1205
1205
  status: 401,
@@ -1542,8 +1542,8 @@ exports.GENERATED_ROUTES = [
1542
1542
  requestBodies: ['application/json'],
1543
1543
  responses: [
1544
1544
  {
1545
- status: 204,
1546
- description: 'No content'
1545
+ status: 200,
1546
+ description: 'Account Deleted!'
1547
1547
  },
1548
1548
  {
1549
1549
  status: 401,
@@ -1682,8 +1682,8 @@ exports.GENERATED_ROUTES = [
1682
1682
  requestBodies: ['application/json'],
1683
1683
  responses: [
1684
1684
  {
1685
- status: 204,
1686
- description: 'No content'
1685
+ status: 200,
1686
+ description: 'Account Deleted!'
1687
1687
  },
1688
1688
  {
1689
1689
  status: 401,
@@ -199,13 +199,6 @@ exports.OVERLAY = {
199
199
  },
200
200
  'POST /SASjsApi/permission': { implemented: true },
201
201
  'PATCH /SASjsApi/permission/{uid}': { implemented: true },
202
- // The three deletes answer 204 here and 200 on the wire: the server's route
203
- // handlers send `res.status(200).send('Account Deleted!')` and
204
- // `'Permission Deleted!'`, while tsoa emitted 204 for a void handler, so the
205
- // document understates the status. Correcting it is a decorator in
206
- // sasjs/server (`@SuccessResponse('200', ...)`), and this package follows the
207
- // document until that release lands - a local 200 would fail the schema check
208
- // that keeps this table honest.
209
202
  'DELETE /SASjsApi/permission/{uid}': { implemented: true },
210
203
  // Session - the caller's own session, then the record behind a triggered one
211
204
  'GET /SASjsApi/session': {
@@ -363,7 +363,7 @@ export const RECORD_CORPUS = [
363
363
  description: 'deletes an account as an administrator, without a password',
364
364
  identity: ADMIN_SIGNED_IN,
365
365
  request: { token: ADMIN, params: { uid: RESTRICTED_UID }, body: {} },
366
- expect: { status: 204 }
366
+ expect: { status: 200, body: 'Account Deleted!' }
367
367
  },
368
368
  {
369
369
  id: 'delete-user-not-admin',
@@ -391,7 +391,7 @@ export const RECORD_CORPUS = [
391
391
  params: { username: 'user2' },
392
392
  body: {}
393
393
  },
394
- expect: { status: 204 }
394
+ expect: { status: 200, body: 'Account Deleted!' }
395
395
  },
396
396
  {
397
397
  id: 'delete-user-by-username-wrong-password',
@@ -1035,7 +1035,7 @@ export const RECORD_CORPUS = [
1035
1035
  description: 'deletes a rule',
1036
1036
  identity: ADMIN_SIGNED_IN,
1037
1037
  request: { token: ADMIN, params: { uid: 'rule-code' } },
1038
- expect: { status: 204 }
1038
+ expect: { status: 200, body: 'Permission Deleted!' }
1039
1039
  },
1040
1040
  {
1041
1041
  id: 'delete-permission-not-admin',
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/host/dispatch.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAOnD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,oFAAoF;IACpF,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,yFAAyF;IACzF,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAsCD,eAAO,MAAM,QAAQ,GACnB,UAAU,QAAQ,EAClB,SAAS,MAAM,EACf,UAAS,UAAe,KACvB,OAAO,CAAC,WAAW,CA+VrB,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,cAAc,EAAE,MAAM,EAwClC,CAAA"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/host/dispatch.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAOnD,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,oFAAoF;IACpF,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;IACtD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,yFAAyF;IACzF,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAsCD,eAAO,MAAM,QAAQ,GACnB,UAAU,QAAQ,EAClB,SAAS,MAAM,EACf,UAAS,UAAe,KACvB,OAAO,CAAC,WAAW,CAqWrB,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,cAAc,EAAE,MAAM,EAwClC,CAAA"}
@@ -207,11 +207,15 @@ export const dispatch = async (services, routeId, request = {}) => {
207
207
  body: await required().updateUser(await caller(), { username: String(params.username ?? '') }, body)
208
208
  };
209
209
  case 'DELETE /SASjsApi/user/{uid}':
210
- await required().deleteUser(await caller(), { uid: String(params.uid ?? '') }, { password: body.password });
211
- return { status: 204 };
210
+ return {
211
+ status: 200,
212
+ body: await required().deleteUser(await caller(), { uid: String(params.uid ?? '') }, { password: body.password })
213
+ };
212
214
  case 'DELETE /SASjsApi/user/by/username/{username}':
213
- await required().deleteUser(await caller(), { username: String(params.username ?? '') }, { password: body.password });
214
- return { status: 204 };
215
+ return {
216
+ status: 200,
217
+ body: await required().deleteUser(await caller(), { username: String(params.username ?? '') }, { password: body.password })
218
+ };
215
219
  case 'GET /SASjsApi/group':
216
220
  return { status: 200, body: await required().listGroups(await caller()) };
217
221
  case 'GET /SASjsApi/group/{uid}':
@@ -274,8 +278,10 @@ export const dispatch = async (services, routeId, request = {}) => {
274
278
  body: await required().updatePermission(await caller(), String(params.uid ?? ''), { setting: String(body.setting ?? '') })
275
279
  };
276
280
  case 'DELETE /SASjsApi/permission/{uid}':
277
- await required().deletePermission(await caller(), String(params.uid ?? ''));
278
- return { status: 204 };
281
+ return {
282
+ status: 200,
283
+ body: await required().deletePermission(await caller(), String(params.uid ?? ''))
284
+ };
279
285
  case 'GET /SASjsApi/client':
280
286
  return { status: 200, body: await required().listClients(await caller()) };
281
287
  case 'POST /SASjsApi/client':
@@ -63,7 +63,7 @@ export interface RecordService {
63
63
  username?: string;
64
64
  }, body: {
65
65
  password?: string;
66
- }): Promise<void>;
66
+ }): Promise<string>;
67
67
  listGroups(caller: Subject | undefined): Promise<GroupResponse[]>;
68
68
  getGroup(caller: Subject | undefined, by: {
69
69
  uid?: string;
@@ -88,7 +88,7 @@ export interface RecordService {
88
88
  updatePermission(caller: Subject | undefined, uid: string, body: {
89
89
  setting: string;
90
90
  }): Promise<PermissionResponse>;
91
- deletePermission(caller: Subject | undefined, uid: string): Promise<void>;
91
+ deletePermission(caller: Subject | undefined, uid: string): Promise<string>;
92
92
  listClients(caller: Subject | undefined): Promise<IdentityClientRecord[]>;
93
93
  createClient(caller: Subject | undefined, body: IdentityClientRecord): Promise<IdentityClientRecord>;
94
94
  /** `PATCH /SASjsApi/auth/updatePassword`, the caller's own password. */
@@ -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":"AAgBA,OAAO,KAAK,EACV,oBAAoB,EAGpB,aAAa,EAEb,OAAO,EACR,MAAM,YAAY,CAAA;AAEnB,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAC/D,OAAO,CACL,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/B,UAAU,CACR,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/B,UAAU,CACR,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACvC,IAAI,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/B,UAAU,CACR,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EACvC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,MAAM,CAAC,CAAA;IAElB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IACjE,QAAQ,CACN,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAChC,WAAW,CACT,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAChC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpE,cAAc,CACZ,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAChC,mBAAmB,CACjB,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAEhC,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAC3E,gBAAgB,CACd,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;KACpB,GACA,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9B,gBAAgB,CACd,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9B,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE3E,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IACzE,YAAY,CACV,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAEhC,wEAAwE;IACxE,cAAc,CACZ,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,IAAI,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACrD,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAiED,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,MAKf,CAAA;AAetC,eAAO,MAAM,mBAAmB,GAAI,OAAO,aAAa,KAAG,aAia1D,CAAA"}
@@ -219,6 +219,9 @@ export const createRecordService = (store) => {
219
219
  throw new ApiError(401, 'Invalid password.');
220
220
  }
221
221
  await store.deleteUser(current.uid);
222
+ // the server's route sends this string itself; the document carries it as
223
+ // the 200 description, so it is the answer and not an extra
224
+ return 'Account Deleted!';
222
225
  },
223
226
  async listGroups(caller) {
224
227
  await requireCaller(store, caller);
@@ -356,6 +359,7 @@ export const createRecordService = (store) => {
356
359
  if (!(await store.permissionById(uid)))
357
360
  throw new ApiError(404, 'Permission not found.');
358
361
  await store.deletePermission(uid);
362
+ return 'Permission Deleted!';
359
363
  },
360
364
  async listClients(caller) {
361
365
  await requireAdmin(store, caller);
@@ -1195,8 +1195,8 @@ export const GENERATED_ROUTES = [
1195
1195
  requestBodies: [],
1196
1196
  responses: [
1197
1197
  {
1198
- status: 204,
1199
- description: 'No content'
1198
+ status: 200,
1199
+ description: 'Permission Deleted!'
1200
1200
  },
1201
1201
  {
1202
1202
  status: 401,
@@ -1539,8 +1539,8 @@ export const GENERATED_ROUTES = [
1539
1539
  requestBodies: ['application/json'],
1540
1540
  responses: [
1541
1541
  {
1542
- status: 204,
1543
- description: 'No content'
1542
+ status: 200,
1543
+ description: 'Account Deleted!'
1544
1544
  },
1545
1545
  {
1546
1546
  status: 401,
@@ -1679,8 +1679,8 @@ export const GENERATED_ROUTES = [
1679
1679
  requestBodies: ['application/json'],
1680
1680
  responses: [
1681
1681
  {
1682
- status: 204,
1683
- description: 'No content'
1682
+ status: 200,
1683
+ description: 'Account Deleted!'
1684
1684
  },
1685
1685
  {
1686
1686
  status: 401,
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/routes/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGzD,yDAAyD;AACzD,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GACtC,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAczD,CAAA;AAiDD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA8NhD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,OAAO,EAAE,UAAU,EAA8C,CAAA"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/routes/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGzD,yDAAyD;AACzD,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GACtC,CAAC;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAczD,CAAA;AAiDD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAuNhD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,OAAO,EAAE,UAAU,EAA8C,CAAA"}
@@ -196,13 +196,6 @@ export const OVERLAY = {
196
196
  },
197
197
  'POST /SASjsApi/permission': { implemented: true },
198
198
  'PATCH /SASjsApi/permission/{uid}': { implemented: true },
199
- // The three deletes answer 204 here and 200 on the wire: the server's route
200
- // handlers send `res.status(200).send('Account Deleted!')` and
201
- // `'Permission Deleted!'`, while tsoa emitted 204 for a void handler, so the
202
- // document understates the status. Correcting it is a decorator in
203
- // sasjs/server (`@SuccessResponse('200', ...)`), and this package follows the
204
- // document until that release lands - a local 200 would fail the schema check
205
- // that keeps this table honest.
206
199
  'DELETE /SASjsApi/permission/{uid}': { implemented: true },
207
200
  // Session - the caller's own session, then the record behind a triggered one
208
201
  'GET /SASjsApi/session': {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sasjs/api",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
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",