@qrvey/assets-sharing 0.0.5 → 0.0.7

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.
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isComposer = isComposer;
4
+ var LOGIN_TYPES;
5
+ (function (LOGIN_TYPES) {
6
+ LOGIN_TYPES["composer"] = "qrveyLogin";
7
+ })(LOGIN_TYPES || (LOGIN_TYPES = {}));
8
+ function isComposer(type) {
9
+ return type === LOGIN_TYPES.composer;
10
+ }
11
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/common/util.ts"],"names":[],"mappings":";;AAIA,gCAEC;AAND,IAAK,WAEJ;AAFD,WAAK,WAAW;IACZ,sCAAuB,CAAA;AAC3B,CAAC,EAFI,WAAW,KAAX,WAAW,QAEf;AAED,SAAgB,UAAU,CAAC,IAAY;IACnC,OAAO,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;AACzC,CAAC"}
@@ -12,20 +12,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FromTokenToUser = void 0;
13
13
  const tsyringe_1 = require("tsyringe");
14
14
  const constants_1 = require("../../common/constants");
15
+ const util_1 = require("../../common/util");
15
16
  const user_1 = require("../entities/user");
16
17
  let FromTokenToUser = class FromTokenToUser {
17
18
  constructor(userRepository) {
18
19
  this.userRepository = userRepository;
19
20
  }
20
21
  async execute({ body, }) {
21
- if (body === null || body === void 0 ? void 0 : body.clientId) {
22
+ const inComposer = (0, util_1.isComposer)(body.loginType || '');
23
+ if (!inComposer) {
22
24
  return {
23
- userId: body.clientId,
25
+ userId: body.clientId || '',
24
26
  roles: body.roles || [],
25
27
  orgId: body.orgId || '',
26
28
  };
27
29
  }
28
- const current = await this.userRepository.getOne(body.userId);
30
+ const current = await this.userRepository.getOne(body.clientId || body.userId);
29
31
  if (!current) {
30
32
  return {
31
33
  userId: '',
@@ -1 +1 @@
1
- {"version":3,"file":"fromTokenToUser.js","sourceRoot":"","sources":["../../../../src/quser/services/fromTokenToUser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAG9C,sDAA4D;AAE5D,2CAAwC;AAIjC,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YAEqB,cAAuC;QAAvC,mBAAc,GAAd,cAAc,CAAyB;IACzD,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,IAAI,GAGP;QACG,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAC;YACjB,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,QAAQ;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aAC1B,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACZ,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK,EAAE,8BAAkB;SAC5B,CAAC;IACN,CAAC;CACJ,CAAA;AAlCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,gBAAgB,CAAC,CAAA;GAFpB,eAAe,CAkC3B"}
1
+ {"version":3,"file":"fromTokenToUser.js","sourceRoot":"","sources":["../../../../src/quser/services/fromTokenToUser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAG9C,sDAA4D;AAC5D,4CAA+C;AAE/C,2CAAwC;AAIjC,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YAEqB,cAAuC;QAAvC,mBAAc,GAAd,cAAc,CAAyB;IACzD,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,IAAI,GAGP;QACG,MAAM,UAAU,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aAC1B,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAC5C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAC/B,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;gBACH,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACZ,CAAC;QACN,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK,EAAE,8BAAkB;SAC5B,CAAC;IACN,CAAC;CACJ,CAAA;AArCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,gBAAgB,CAAC,CAAA;GAFpB,eAAe,CAqC3B"}
@@ -18,9 +18,9 @@ let CheckUserAccessLevel = class CheckUserAccessLevel {
18
18
  constructor(detailsRepository) {
19
19
  this.detailsRepository = detailsRepository;
20
20
  }
21
- async execute({ userId, assetId, clientId, roles, orgId, }) {
21
+ async execute({ userId, assetId, clientId, loginType, roles, orgId, }) {
22
22
  const user = await (0, index_1.fromTokenToUser)({
23
- body: { userId, clientId, roles, orgId },
23
+ body: { userId, clientId, roles, orgId, loginType },
24
24
  });
25
25
  const details = await this.detailsRepository.getList({
26
26
  data: { assetId, user },
@@ -1 +1 @@
1
- {"version":3,"file":"checkUserAccessLevel.js","sourceRoot":"","sources":["../../../../src/sharing/services/checkUserAccessLevel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAAsD;AACtD,uCAA8C;AAC9C,iDAAoD;AAI7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAEqB,iBAAoD;QAApD,sBAAiB,GAAjB,iBAAiB,CAAmC;IACtE,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,GAOR;QACG,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;SAC3C,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YACxD,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SAC3B,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,wBAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7D,MAAM,aAAa,GAAG,uBAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO;YACH,KAAK,EAAE,aAAa,CAAC,cAAc;YACnC,WAAW,EAAE,aAAa,CAAC,oBAAoB;SAClD,CAAC;IACN,CAAC;CACJ,CAAA;AAnCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;GAF9B,oBAAoB,CAmChC"}
1
+ {"version":3,"file":"checkUserAccessLevel.js","sourceRoot":"","sources":["../../../../src/sharing/services/checkUserAccessLevel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAAsD;AACtD,uCAA8C;AAC9C,iDAAoD;AAI7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAEqB,iBAAoD;QAApD,sBAAiB,GAAjB,iBAAiB,CAAmC;IACtE,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,GAQR;QACG,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YACxD,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SAC3B,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,wBAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAC7D,MAAM,aAAa,GAAG,uBAAa,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO;YACH,KAAK,EAAE,aAAa,CAAC,cAAc;YACnC,WAAW,EAAE,aAAa,CAAC,oBAAoB;SAClD,CAAC;IACN,CAAC;CACJ,CAAA;AArCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;GAF9B,oBAAoB,CAqChC"}
@@ -370,6 +370,11 @@ container.register(
370
370
  container.register("UserRepository", UserRepository);
371
371
  var Context = container;
372
372
 
373
+ // src/common/util.ts
374
+ function isComposer(type) {
375
+ return type === "qrveyLogin" /* composer */;
376
+ }
377
+
373
378
  // src/quser/entities/user.ts
374
379
  var User = class {
375
380
  constructor(params) {
@@ -397,14 +402,17 @@ var FromTokenToUser = class {
397
402
  async execute({
398
403
  body
399
404
  }) {
400
- if (body == null ? void 0 : body.clientId) {
405
+ const inComposer = isComposer(body.loginType || "");
406
+ if (!inComposer) {
401
407
  return {
402
- userId: body.clientId,
408
+ userId: body.clientId || "",
403
409
  roles: body.roles || [],
404
410
  orgId: body.orgId || ""
405
411
  };
406
412
  }
407
- const current = await this.userRepository.getOne(body.userId);
413
+ const current = await this.userRepository.getOne(
414
+ body.clientId || body.userId
415
+ );
408
416
  if (!current) {
409
417
  return {
410
418
  userId: "",
@@ -542,11 +550,12 @@ var CheckUserAccessLevel = class {
542
550
  userId,
543
551
  assetId,
544
552
  clientId,
553
+ loginType,
545
554
  roles,
546
555
  orgId
547
556
  }) {
548
557
  const user = await fromTokenToUser({
549
- body: { userId, clientId, roles, orgId }
558
+ body: { userId, clientId, roles, orgId, loginType }
550
559
  });
551
560
  const details = await this.detailsRepository.getList({
552
561
  data: { assetId, user },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/context.ts","../../src/quser/implementations/user.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/quser/services/fromTokenToUser.ts","../../src/quser/entities/user.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/list.ts","../../src/sharing/services/upsert.ts","../../src/sharing/entities/sharing.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","CrudSchema","inject","injectable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;;;ACAP,SAAS,iBAAiB;;;ACA1B,SAAS,kBAAkB;;;ACApB,IAAM,cAAc;AAAA,EACvB,eAAe,QAAQ,IAAI;AAAA,EAC3B,cAAc,QAAQ,IAAI;AAC9B;AAEO,IAAM,gBAAgB;AAAA,EACzB,yBAAyB;AAAA,EACzB,eAAe,YAAY;AAAA,EAC3B,cAAc,YAAY;AAC9B;AAEO,IAAM,qBAAqB;AAE3B,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,QAAK;AACL,EAAAA,YAAA,QAAK;AAFG,SAAAA;AAAA,GAAA;AAKL,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,cAAW;AAFH,SAAAA;AAAA,GAAA;AAKL,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,kBAAe;AAHP,SAAAA;AAAA,GAAA;AAML,IAAK,eAAL,kBAAKC,kBAAL;AACH,EAAAA,4BAAA,UAAO,KAAP;AACA,EAAAA,4BAAA,aAAU,KAAV;AACA,EAAAA,4BAAA,cAAW,KAAX;AACA,EAAAA,4BAAA,WAAQ,KAAR;AAJQ,SAAAA;AAAA,GAAA;AAOL,IAAM,iBAAiB;;;ADhCvB,IAAM,YAAN,cAAwB,WAAW;AAkB1C;AAlBa,UACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO;AACX;AAJS,UAMF,UAAU;AAAA,EACb,QAAQ;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,IACJ,MAAM;AAAA,EACV;AACJ;AAfS,UAiBF,SAAS,cAAc;;;AErBlC,SAAS,aAAa,mBAAmB;;;ACAzC,SAAS,iBAAiB;AAE1B,IAAI;AACG,SAAS,gBAAgB;AAC5B,MAAI,CAAC;AAAY,iBAAa,UAAU;AACxC,SAAO;AACX;;;ADFO,IAAM,iBAAN,cAA6B,YAAiB;AAAA,EACjD,YAAY,QAAa;AACrB,UAAM,QAAQ,cAAc,CAAC;AAAA,EACjC;AAAA,EAEA,OAAO,WAAmB,OAAY;AAClC,WAAO,YAAY,WAAW,KAAK;AAAA,EACvC;AACJ;;;AEPO,IAAM,iBAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,SAAS;AAAA,EACnB;AAAA,EAEA,MAAM,OAAO,YAA8C;AACvD,UAAM,SAAS;AAAA,MACX,SAAS,CAAC,KAAK,OAAO,UAAU,UAAU,CAAC;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AACJ;;;ACpBA,SAAS,cAAAC,mBAAkB;AAIpB,IAAM,sBAAN,cAAkCA,YAAW;AAwFpD;AAxFa,oBACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO,GAAG,cAAc,YAAY;AACxC;AAJS,oBAMF,UAAU;AAAA,EACb,oBAAoB,EAAE,MAAM,UAAU,SAAS,KAAK;AAAA,EACpD,UAAU,EAAE,MAAM,SAAS;AAAA,EAC3B,cAAc,EAAE,MAAM,UAAU;AAAA,EAChC,QAAQ,EAAE,MAAM,SAAS;AAAA,EACzB,aAAa,EAAE,MAAM,SAAS;AAAA,EAC9B,aAAa,EAAE,MAAM,SAAS;AAAA,EAC9B,cAAc,EAAE,MAAM,SAAS;AAAA,EAC/B,cAAc,EAAE,MAAM,SAAS;AAAA,EAC/B,YAAY,EAAE,MAAM,OAAO;AAAA,EAC3B,YAAY,EAAE,MAAM,OAAO;AAAA,EAC3B,YAAY,EAAE,MAAM,OAAO;AAC/B;AAlBS,oBAoBF,UAAU;AAAA,EACb,qBAAqB;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,qCAAqC;AAAA,IACjC,MAAM;AAAA,IACN,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,0CAA0C;AAAA,IACtC,MAAM;AAAA,IACN,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,gCAAgC;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,uBAAuB;AAAA,IACnB,MAAM;AAAA,IACN,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ;AApFS,oBAsFF,SAAS,cAAc;AAtFrB,oBAuFF,UAAU;;;AC7Ed,IAAM,2BAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,mBAAmB;AAAA,EAC7B;AAAA,EAEA,MAAM,OAAO,iBAA8D;AACvE,UAAM,SAAS;AAAA,MACX,SAAS,CAAC,KAAK,OAAO,sBAAsB,eAAe,CAAC;AAAA,IAChE;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QACF,SACwC;AACxC,UAAM,aAAa,oBAAoB,QAAQ;AAC/C,UAAM,aAAa,KAAK,cAAc,QAAQ,UAAU;AACxD,UAAM,SAKF;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACH,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,MACxB;AAAA,IACJ;AAEA,UAAM,aAAa,CAAC,KAAK,OAAO,YAAY,QAAQ,KAAK,OAAO,CAAC;AACjE,QAAI,QAAQ,SAAS;AACjB,cAAQ,QAAQ,QAAQ,CAAC,WAAW;AAChC,mBAAW,KAAK,KAAK,OAAO,OAAO,QAAQ,OAAO,KAAK,CAAC;AAAA,MAC5D,CAAC;AAAA,IACL;AACA,WAAO,UAAU;AAEjB,QAAI,QAAQ,KAAK,MAAM;AACnB,YAAM,gBAAgB,KAAK;AAAA,QACvB,QAAQ,KAAK;AAAA,QACb;AAAA,MACJ;AACA,aAAO,UAAU;AAAA,IACrB;AAEA,QAAI,QAAQ;AAAS,aAAO,UAAU,QAAQ;AAE9C,UAAM,WAAW,MAAM,MAAM,KAAK,MAAM;AACxC,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,SAA4D;AACrE,UAAM,WAAY,MAAM,MAAM,OAAO,OAAO;AAC5C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MACF,iBACA,SACgB;AAChB,UAAM,MAAM;AAAA,MACR,CAAC,KAAK,OAAO,sBAAsB,eAAe,CAAC;AAAA,MACnD;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,iBAA2C;AACpD,UAAM,MAAM,OAAO;AAAA,MACf,KAAK,OAAO,sBAAsB,eAAe;AAAA,IACrD,CAAC;AACD,WAAO;AAAA,EACX;AAAA,EAEQ,cAAc,SAAkC;AA7F5D;AA8FQ,WAAO;AAAA,MACH,QAAO,wCAAS,UAAT,YAAkB;AAAA,MACzB,OAAM,wCAAS,SAAT,YAAiB;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEQ,cACJ,MACA,gBACF;AACE,UAAM,EAAE,QAAQ,MAAM,IAAI;AAC1B,UAAM,QAAQ,KAAK,UAAU,KAAK,qBAAqB,KAAK;AAC5D,UAAM,UAAU;AAAA,MACZ,IAAI;AAAA,QACA;AAAA,UACI,KAAK;AAAA,YACD,KAAK,YAAY,eAAe,MAAM;AAAA,YACtC,KAAK,YAAY,eAAe,MAAM;AAAA,YACtC,KAAK,YAAY,UAAU,KAAK;AAAA,UACpC;AAAA,QACJ;AAAA,QACA;AAAA,UACI,KAAK;AAAA,YACD,KAAK,YAAY,eAAe,KAAK;AAAA,YACrC,KAAK,YAAY,eAAe,cAAc;AAAA,YAC9C,KAAK,YAAY,UAAU,KAAK;AAAA,UACpC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,UAAS,+BAAO,UAAS,GAAG;AAC5B,cAAQ,GAAG,KAAK;AAAA,QACZ,KAAK;AAAA,UACD,KAAK,YAAY,eAAe,OAAO,IAAI;AAAA,UAC3C,KAAK,YAAY,eAAe,MAAM;AAAA,UACtC,KAAK,YAAY,UAAU,KAAK;AAAA,QACpC;AAAA,MACJ,CAAC;AAAA,IACL;AACA,UAAM,SAAS,CAAC;AAChB,QAAI;AAAgB,aAAO,KAAK,GAAG,cAAc;AACjD,WAAO,KAAK,OAAO;AACnB,WAAO,EAAE,KAAK,OAAO;AAAA,EACzB;AACJ;;;AC1IA,SAAS,cAAAA,mBAAkB;AAIpB,IAAM,eAAN,cAA2BA,YAAW;AA4B7C;AA5Ba,aACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO,GAAG,cAAc,YAAY;AACxC;AAJS,aAMF,UAAU;AAAA,EACb,UAAU,EAAE,MAAM,UAAU,SAAS,KAAK;AAAA,EAC1C,YAAY,EAAE,MAAM,SAAS;AAAA,EAC7B,YAAY,EAAE,MAAM,OAAO;AAAA,EAC3B,YAAY,EAAE,MAAM,OAAO;AAAA,EAC3B,YAAY,EAAE,MAAM,OAAO;AAAA,EAC3B,cAAc,EAAE,MAAM,SAAS;AACnC;AAbS,aAeF,UAAU;AAAA,EACb,yBAAyB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS,CAAC,YAAY,YAAY;AAAA,EACtC;AAAA,EACA,kBAAkB;AAAA,IACd,MAAM;AAAA,IACN,SAAS,CAAC,YAAY;AAAA,EAC1B;AACJ;AAxBS,aA0BF,SAAS,cAAc;AA1BrB,aA2BF,UAAU;;;AC1Bd,IAAM,oBAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,YAAY;AAAA,EACtB;AAAA,EAEA,MAAM,OAAO,SAA+C;AACxD,UAAM,SAAS;AAAA,MACX,SAAS,CAAC,KAAK,OAAO,YAAY,OAAO,CAAC;AAAA,IAC9C;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,SAA8C;AACvD,UAAM,WAAY,MAAM,MAAM,OAAO,OAAO;AAC5C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MAAM,SAAiB,SAAyC;AAClE,UAAM,MAAM,OAAO,CAAC,KAAK,OAAO,YAAY,OAAO,CAAC,GAAG,OAAO;AAC9D,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,SAAmC;AAC5C,UAAM,MAAM,OAAO,CAAC,KAAK,OAAO,YAAY,OAAO,CAAC,CAAC;AACrD,WAAO;AAAA,EACX;AACJ;;;AT1BA,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AACA,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AACA,UAAU,SAAkC,kBAAkB,cAAc;AAErE,IAAM,UAAU;;;AUnBvB,SAAS,QAAQ,kBAAkB;;;ACE5B,IAAM,OAAN,MAAW;AAAA,EAMd,YAAY,QAAkB;AAC1B,SAAK,SAAS,OAAO;AACrB,SAAK,QAAQ,OAAO;AACpB,SAAK,SAAS,OAAO;AACrB,SAAK,eAAe,OAAO;AAAA,EAC/B;AAAA,EAEA,IAAW,WAAmB;AAC1B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,YAAsB;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,kBAA0B;AACjC,WAAO,KAAK;AAAA,EAChB;AACJ;;;ADjBO,IAAM,kBAAN,MAAsB;AAAA,EACzB,YAEqB,gBACnB;AADmB;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEmC;AAC/B,QAAI,6BAAM,UAAU;AAChB,aAAO;AAAA,QACH,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK,SAAS,CAAC;AAAA,QACtB,OAAO,KAAK,SAAS;AAAA,MACzB;AAAA,IACJ;AACA,UAAM,UAAU,MAAM,KAAK,eAAe,OAAO,KAAK,MAAM;AAC5D,QAAI,CAAC,SAAS;AACV,aAAO;AAAA,QACH,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,OAAO;AAAA,MACX;AAAA,IACJ;AAEA,UAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,WAAO;AAAA,MACH,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,OAAO;AAAA,IACX;AAAA,EACJ;AACJ;AAlCa,kBAAN;AAAA,EADN,WAAW;AAAA,EAGH,0BAAO,gBAAgB;AAAA,GAFnB;;;AETb,SAAS,UAAAC,SAAQ,cAAAC,mBAAkB;;;ACAnC,SAAS,aAAa;AAef,IAAM,gBAAN,MAAM,eAAc;AAAA,EAcvB,YAAY,QAA4B;AACpC,SAAK,mBAAmB,OAAO;AAC/B,SAAK,UAAU,OAAO;AACtB,SAAK,cAAc,OAAO;AAC1B,SAAK,oBAAoB,KAAK;AAAA,MAC1B,OAAO;AAAA,IACX;AACA,SAAK,QAAQ,OAAO;AACpB,SAAK,aAAa,OAAO;AACzB,SAAK,aAAa,OAAO;AACzB,SAAK,cAAc,OAAO;AAC1B,SAAK,eAAe,OAAO;AAC3B,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAO,OAAO,QAA6C;AA9C/D;AA+CQ,UAAM,OAAM,oBAAI,KAAK,GAAE,YAAY;AACnC,UAAM,MAA0B,iCACzB,SADyB;AAAA,MAE5B,mBAAkB,YAAO,aAAP,YAAmB,MAAM;AAAA,MAC3C,WAAW;AAAA,MACX,WAAW;AAAA,IACf;AACA,WAAO,IAAI,eAAc,GAAG;AAAA,EAChC;AAAA,EAEA,OAAO,MAAM,QAA4C;AACrD,WAAO,IAAI,eAAc;AAAA,MACrB,kBAAkB,OAAO;AAAA,MACzB,SAAS,OAAO;AAAA,MAChB,aAAa,OAAO;AAAA,MACpB,OAAO,OAAO;AAAA,MACd,YAAY,OAAO;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA,MACpB,cAAc,OAAO;AAAA,MACrB,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,IACtB,CAAC;AAAA,EACL;AAAA,EAEA,OAAO,QAA8B;AACjC,QAAI,OAAO;AAAa,WAAK,cAAc,OAAO;AAClD,QAAI,OAAO;AAAa,WAAK,cAAc,OAAO;AAClD,SAAK,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,EAC5C;AAAA,EAEA,UAA+B;AAC3B,WAAO;AAAA,MACH,oBAAoB,KAAK;AAAA,MACzB,UAAU,KAAK;AAAA,MACf,cAAc,KAAK;AAAA,MACnB,QAAQ,KAAK;AAAA,MACb,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,cAAc,KAAK;AAAA,MACnB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,UAA8B;AAC1B,WAAO;AAAA,MACH,kBAAkB,KAAK;AAAA,MACvB,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,SAAiC;AAC7B,WAAO;AAAA,MACH,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,mBAAmB,KAAK;AAAA,MACxB,OAAO,KAAK;AAAA,MACZ,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB,cAAc,KAAK;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAW,sBAA8B;AACrC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,iBAA+B;AACtC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,uBAA+B;AACtC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEQ,yBAAyB,OAAuB;AA3I5D;AA4IQ,YAAO,kBAAa,KAAK,MAAlB,YAAuB;AAAA,EAClC;AACJ;;;ADtIO,IAAM,uBAAN,MAA2B;AAAA,EAC9B,YAEqB,mBACnB;AADmB;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAM0D;AACtD,UAAM,OAAO,MAAM,gBAAgB;AAAA,MAC/B,MAAM,EAAE,QAAQ,UAAU,OAAO,MAAM;AAAA,IAC3C,CAAC;AACD,UAAM,UAAU,MAAM,KAAK,kBAAkB,QAAQ;AAAA,MACjD,MAAM,EAAE,SAAS,KAAK;AAAA,MACtB,SAAS,CAAC,EAAE,QAAQ,gBAAgB,WAAW,OAAO,CAAC;AAAA,MACvD,YAAY,EAAE,OAAO,EAAE;AAAA,IAC3B,CAAC;AACD,QAAI,QAAQ,MAAM,WAAW;AACzB,aAAO,EAAE,qBAA0B,aAAa,OAAO;AAC3D,UAAM,gBAAgB,cAAc,MAAM,QAAQ,MAAM,CAAC,CAAC;AAC1D,WAAO;AAAA,MACH,OAAO,cAAc;AAAA,MACrB,aAAa,cAAc;AAAA,IAC/B;AAAA,EACJ;AACJ;AAnCa,uBAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,0BAA0B;AAAA,GAF7B;;;AERb,SAAS,UAAAA,SAAQ,cAAAC,mBAAkB;AAS5B,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAEqB,mBACnB;AADmB;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ,EAAE,KAAK,GAA8C;AACtE,UAAM,EAAE,QAAQ,IAAI;AACpB,UAAM,UAAU,MAAM,KAAK,kBAAkB,OAAO,OAAO;AAE3D,QAAI,CAAC;AAAS,aAAO;AACrB,UAAM,gBAAgB,MAAM,KAAK,kBAAkB,OAAO,OAAO;AACjE,WAAO;AAAA,EACX;AACJ;AAda,gBAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,mBAAmB;AAAA,GAFtB;;;ACTb,SAAS,UAAAA,SAAQ,cAAAC,mBAAkB;AAY5B,IAAM,cAAN,MAAkB;AAAA,EACrB,YAEqB,mBAEA,mBACnB;AAHmB;AAEA;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEuC;AACnC,UAAM;AAAA,MACF,MAAM,EAAE,QAAQ;AAAA,MAChB;AAAA,IACJ,IAAI;AACJ,UAAM,UAAU,MAAM,KAAK,kBAAkB,OAAO,OAAO;AAE3D,QAAI,CAAC;AAAS,aAAO;AACrB,UAAM,gBAAgB,MAAM,KAAK,kBAAkB,QAAQ;AAAA,MACvD,MAAM,EAAE,QAAQ;AAAA,MAChB;AAAA,IACJ,CAAC;AACD,UAAM,QAAQ,cAAc,MAAM;AAAA,MAAI,CAAC,SACnC,cAAc,MAAM,IAA2B,EAAE,OAAO;AAAA,IAC5D;AACA,WAAO,iCACA,gBADA;AAAA,MAEH;AAAA,IACJ;AAAA,EACJ;AACJ;AAhCa,cAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,mBAAmB;AAAA,EAE1B,mBAAAA,QAAO,0BAA0B;AAAA,GAJ7B;;;ACZb,SAAS,UAAAA,SAAQ,cAAAC,mBAAkB;;;ACQ5B,IAAM,UAAN,MAAM,SAAQ;AAAA,EAOjB,YAAY,QAAqB;AAC7B,SAAK,UAAU,OAAO;AACtB,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,OAAO;AACxB,SAAK,YAAY,OAAO;AAAA,EAC5B;AAAA,EAEA,OAAO,OAAO,QAAgC;AAC1C,UAAM,OAAM,oBAAI,KAAK,GAAE,YAAY;AACnC,UAAM,MAAmB,iCAClB,SADkB;AAAA,MAErB,WAAW;AAAA,MACX,WAAW;AAAA,IACf;AACA,WAAO,IAAI,SAAQ,GAAG;AAAA,EAC1B;AAAA,EAEA,OAAO,MAAM,QAA+B;AACxC,WAAO,IAAI,SAAQ;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,IACtB,CAAC;AAAA,EACL;AAAA,EAEA,SAAS;AACL,SAAK,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,EAC5C;AAAA,EAEA,UAAwB;AACpB,WAAO;AAAA,MACH,UAAU,KAAK;AAAA,MACf,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,UAAuB;AACnB,WAAO;AAAA,MACH,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,SAA0B;AACtB,WAAO;AAAA,MACH,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAW,aAAqB;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAW,eAAuB;AAC9B,WAAO,KAAK;AAAA,EAChB;AACJ;;;ADlDO,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAEqB,mBAEA,mBACnB;AAHmB;AAEA;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEsC;AAClC,UAAM,UAAU,KAAK;AACrB,UAAM,UAAU,MAAM,KAAK,kBAAkB,OAAO,OAAO;AAC3D,QAAI;AACJ,QAAI,SAAS;AACT,uBAAiB,QAAQ,MAAM,OAAO;AAAA,IAC1C,OAAO;AACH,YAAM,gBAAgB;AAAA,QAClB,SAAS,KAAK;AAAA,QACd,WAAW,KAAK;AAAA,MACpB;AACA,uBAAiB,QAAQ,OAAO,aAAa;AAC7C,YAAM,KAAK,kBAAkB,OAAO,eAAe,QAAQ,CAAC;AAAA,IAChE;AAEA,QAAI,cAA+B,CAAC;AACpC,QAAI,KAAK;AAAK,oBAAc,MAAM,KAAK,WAAW,SAAS,KAAK,GAAG;AACnE,QAAI,KAAK;AAAQ,YAAM,KAAK,cAAc,KAAK,MAAM;AAErD,mBAAe,OAAO;AACtB,UAAM,KAAK,kBAAkB;AAAA,MACzB,eAAe;AAAA,MACf,eAAe,QAAQ;AAAA,IAC3B;AACA,WAAO,YAAY,IAAI,CAAC,WAAW,OAAO,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,MAAc,WACV,SACA,MACwB;AA3EhC;AA4EQ,UAAM,cAA+B,CAAC;AACtC,eAAW,UAAU,MAAM;AACvB,UAAI;AACJ,YAAM,gBAAgB,CAAC,OAAO,WACxB,OACA,MAAM,KAAK,kBAAkB,OAAO,OAAO,QAAQ;AACzD,UAAI,eAAe;AACf,wBAAgB,cAAc,MAAM,aAAa;AACjD,sBAAc,OAAO,MAAM;AAC3B,cAAM,KAAK,kBAAkB;AAAA,UACzB,cAAc;AAAA,UACd,cAAc,QAAQ;AAAA,QAC1B;AAAA,MACJ,OAAO;AACH,cAAM,gBAAgB;AAAA,UAClB;AAAA,UACA,QAAO,YAAO,UAAP,YAAgB;AAAA,WACpB;AAEP,wBAAgB,cAAc,OAAO,aAAa;AAClD,cAAM,KAAK,kBAAkB,OAAO,cAAc,QAAQ,CAAC;AAAA,MAC/D;AACA,kBAAY,KAAK,aAAa;AAAA,IAClC;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAc,cACV,MACa;AACb,eAAW,UAAU,MAAM;AACvB,YAAM,KAAK,kBAAkB,OAAO,OAAO,QAAQ;AAAA,IACvD;AAAA,EACJ;AACJ;AA7Ea,gBAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,mBAAmB;AAAA,EAE1B,mBAAAA,QAAO,0BAA0B;AAAA,GAJ7B;;;AjBzBN,IAAM,MAAM;AAAA,EACf,QAAQ,IAAI,SACR,QAAQ,QAAQ,aAAa,EAAE,QAAQ,GAAG,IAAI;AAAA,EAClD,MAAM,IAAI,SACN,QAAQ,QAAQ,WAAW,EAAE,QAAQ,GAAG,IAAI;AAAA,EAChD,QAAQ,IAAI,SACR,QAAQ,QAAQ,aAAa,EAAE,QAAQ,GAAG,IAAI;AACtD;AAEO,IAAM,uBAAuB,IAC7B,SACF,QAAQ,QAAQ,oBAAoB,EAAE,QAAQ,GAAG,IAAI;AAEnD,IAAM,kBAAkB,IACxB,SACF,QAAQ,QAAQ,eAAe,EAAE,QAAQ,GAAG,IAAI","sourcesContent":["import 'reflect-metadata';\nimport { Context } from './context';\nimport { FromTokenToUser } from './quser/services/fromTokenToUser';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport const fromTokenToUser = (\n ...args: Parameters<FromTokenToUser['execute']>\n) => Context.resolve(FromTokenToUser).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from './common/constants';\n\nexport { GetSharingList } from './sharing/entities/types/details.type';\n","import { container } from 'tsyringe';\n\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\ncontainer.register<UserRepositoryInterface>('UserRepository', UserRepository);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class UserModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Users`,\n alias: 'qv_users',\n };\n\n static columns = {\n userid: {\n type: 'string',\n primary: true,\n columnId: true,\n },\n groups: {\n type: 'array',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport enum ASSET_TYPE {\n DX = 'DX', // DASHBOARD X (Next Gen)\n DM = 'DM', // DOWNLOAD MANAGER\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n}\n\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any) {\n return buildFilter(attribute, value);\n }\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { UserModel } from './user.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { BaseUser } from '../entities/types/user.type';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\nexport class UserRepository\n extends BaseRepository\n implements UserRepositoryInterface\n{\n constructor() {\n super(UserModel);\n }\n\n async getOne(identifier: string): Promise<BaseUser | null> {\n const params = {\n filters: [this.filter('userid', identifier)],\n };\n const response = await super.findItem(params);\n return response as BaseUser;\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { IFilter } from '@qrvey/data-persistence';\n\nimport { SharingDetailsModel } from './details.model';\nimport {\n ListInput,\n ListOutput,\n Pagination,\n ParamsFromTokenToUser,\n} from '../../common/common.type';\nimport { LIMIT_PER_PAGE, ORGANIZATION_QRVEY } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string; user?: ParamsFromTokenToUser }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.data.user) {\n const currentFilter = this.getUserFilter(\n options.data.user,\n filterList,\n );\n params.filters = currentFilter;\n }\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n\n private getUserFilter(\n user: ParamsFromTokenToUser,\n currentFilters?: IFilter[],\n ) {\n const { userId, roles } = user;\n const orgId = user.orgId === '' ? ORGANIZATION_QRVEY : user.orgId; //Review if this is right\n const sharing = {\n OR: [\n {\n AND: [\n this.buildFilter('shared_with', userId),\n this.buildFilter('shared_type', 'USER'),\n this.buildFilter('org_id', orgId),\n ],\n },\n {\n AND: [\n this.buildFilter('shared_with', orgId),\n this.buildFilter('shared_type', 'ORGANIZATION'),\n this.buildFilter('org_id', orgId),\n ],\n },\n ],\n };\n if (roles && roles?.length > 0) {\n sharing.OR.push({\n AND: [\n this.buildFilter('shared_with', roles, 'IN'),\n this.buildFilter('shared_type', 'ROLE'),\n this.buildFilter('org_id', orgId),\n ],\n });\n }\n const filter = [];\n if (currentFilters) filter.push(...currentFilters);\n filter.push(sharing);\n return { AND: filter };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n sharingAssetIdAssetType: {\n name: 'sharing_asset_id_asset_type_index',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ParamsFromTokenToUser } from '../../common/common.type';\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { UserToken } from '../entities/types/user.type';\nimport { User } from '../entities/user';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class FromTokenToUser {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UserToken;\n }): Promise<ParamsFromTokenToUser> {\n if (body?.clientId) {\n return {\n userId: body.clientId,\n roles: body.roles || [],\n orgId: body.orgId || '',\n };\n }\n const current = await this.userRepository.getOne(body.userId);\n if (!current) {\n return {\n userId: '',\n roles: [],\n orgId: '',\n };\n }\n\n const user = new User(current);\n return {\n userId: body.userId,\n roles: user.getGroups,\n orgId: ORGANIZATION_QRVEY,\n };\n }\n}\n","import { BaseUser } from './types/user.type';\n\nexport class User {\n private userId: string;\n private email: string;\n private groups: string[];\n private organization: string;\n\n constructor(params: BaseUser) {\n this.userId = params.userid;\n this.email = params.email;\n this.groups = params.groups;\n this.organization = params.organization;\n }\n\n public get getEmail(): string {\n return this.email;\n }\n\n public get getGroups(): string[] {\n return this.groups;\n }\n\n public get getOrganization(): string {\n return this.organization;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL } from '../../common/constants';\nimport { fromTokenToUser } from '../../index';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n assetId,\n clientId,\n roles,\n orgId,\n }: {\n assetId: string;\n userId: string;\n clientId?: string;\n roles?: string[];\n orgId?: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const user = await fromTokenToUser({\n body: { userId, clientId, roles, orgId },\n });\n const details = await this.detailsRepository.getList({\n data: { assetId, user },\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n pagination: { limit: 1 },\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n const currentDetail = SharingDetail.parse(details.items[0]);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const obj: BaseSharingDetails = {\n ...params,\n sharingDetailsId: params.sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel) this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<{\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n }>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId: body.assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n let currentDetail: SharingDetail;\n const sharingDetail = !detail.sharedId\n ? null\n : await this.detailsRepository.getOne(detail.sharedId);\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/context.ts","../../src/quser/implementations/user.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/quser/services/fromTokenToUser.ts","../../src/common/util.ts","../../src/quser/entities/user.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/list.ts","../../src/sharing/services/upsert.ts","../../src/sharing/entities/sharing.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","CrudSchema","inject","injectable"],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { Context } from './context';\nimport { FromTokenToUser } from './quser/services/fromTokenToUser';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport const fromTokenToUser = (\n ...args: Parameters<FromTokenToUser['execute']>\n) => Context.resolve(FromTokenToUser).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from './common/constants';\n\nexport { GetSharingList } from './sharing/entities/types/details.type';\n","import { container } from 'tsyringe';\n\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\ncontainer.register<UserRepositoryInterface>('UserRepository', UserRepository);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class UserModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Users`,\n alias: 'qv_users',\n };\n\n static columns = {\n userid: {\n type: 'string',\n primary: true,\n columnId: true,\n },\n groups: {\n type: 'array',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport enum ASSET_TYPE {\n DX = 'DX', // DASHBOARD X (Next Gen)\n DM = 'DM', // DOWNLOAD MANAGER\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL',\n EXTERNAL = 'EXTERNAL',\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n}\n\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any) {\n return buildFilter(attribute, value);\n }\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { UserModel } from './user.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { BaseUser } from '../entities/types/user.type';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\nexport class UserRepository\n extends BaseRepository\n implements UserRepositoryInterface\n{\n constructor() {\n super(UserModel);\n }\n\n async getOne(identifier: string): Promise<BaseUser | null> {\n const params = {\n filters: [this.filter('userid', identifier)],\n };\n const response = await super.findItem(params);\n return response as BaseUser;\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { IFilter } from '@qrvey/data-persistence';\n\nimport { SharingDetailsModel } from './details.model';\nimport {\n ListInput,\n ListOutput,\n Pagination,\n ParamsFromTokenToUser,\n} from '../../common/common.type';\nimport { LIMIT_PER_PAGE, ORGANIZATION_QRVEY } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string; user?: ParamsFromTokenToUser }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.data.user) {\n const currentFilter = this.getUserFilter(\n options.data.user,\n filterList,\n );\n params.filters = currentFilter;\n }\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n\n private getUserFilter(\n user: ParamsFromTokenToUser,\n currentFilters?: IFilter[],\n ) {\n const { userId, roles } = user;\n const orgId = user.orgId === '' ? ORGANIZATION_QRVEY : user.orgId; //Review if this is right\n const sharing = {\n OR: [\n {\n AND: [\n this.buildFilter('shared_with', userId),\n this.buildFilter('shared_type', 'USER'),\n this.buildFilter('org_id', orgId),\n ],\n },\n {\n AND: [\n this.buildFilter('shared_with', orgId),\n this.buildFilter('shared_type', 'ORGANIZATION'),\n this.buildFilter('org_id', orgId),\n ],\n },\n ],\n };\n if (roles && roles?.length > 0) {\n sharing.OR.push({\n AND: [\n this.buildFilter('shared_with', roles, 'IN'),\n this.buildFilter('shared_type', 'ROLE'),\n this.buildFilter('org_id', orgId),\n ],\n });\n }\n const filter = [];\n if (currentFilters) filter.push(...currentFilters);\n filter.push(sharing);\n return { AND: filter };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n sharingAssetIdAssetType: {\n name: 'sharing_asset_id_asset_type_index',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ParamsFromTokenToUser } from '../../common/common.type';\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { isComposer } from '../../common/util';\nimport { UserToken } from '../entities/types/user.type';\nimport { User } from '../entities/user';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class FromTokenToUser {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UserToken;\n }): Promise<ParamsFromTokenToUser> {\n const inComposer = isComposer(body.loginType || '');\n if (!inComposer) {\n return {\n userId: body.clientId || '',\n roles: body.roles || [],\n orgId: body.orgId || '',\n };\n }\n const current = await this.userRepository.getOne(\n body.clientId || body.userId,\n );\n if (!current) {\n return {\n userId: '',\n roles: [],\n orgId: '',\n };\n }\n\n const user = new User(current);\n return {\n userId: body.userId,\n roles: user.getGroups,\n orgId: ORGANIZATION_QRVEY,\n };\n }\n}\n","enum LOGIN_TYPES {\n composer = 'qrveyLogin',\n}\n\nexport function isComposer(type: string): boolean {\n return type === LOGIN_TYPES.composer;\n}\n","import { BaseUser } from './types/user.type';\n\nexport class User {\n private userId: string;\n private email: string;\n private groups: string[];\n private organization: string;\n\n constructor(params: BaseUser) {\n this.userId = params.userid;\n this.email = params.email;\n this.groups = params.groups;\n this.organization = params.organization;\n }\n\n public get getEmail(): string {\n return this.email;\n }\n\n public get getGroups(): string[] {\n return this.groups;\n }\n\n public get getOrganization(): string {\n return this.organization;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL } from '../../common/constants';\nimport { fromTokenToUser } from '../../index';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n assetId,\n clientId,\n loginType,\n roles,\n orgId,\n }: {\n assetId: string;\n userId: string;\n clientId?: string;\n loginType?: string;\n roles?: string[];\n orgId?: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const user = await fromTokenToUser({\n body: { userId, clientId, roles, orgId, loginType },\n });\n const details = await this.detailsRepository.getList({\n data: { assetId, user },\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n pagination: { limit: 1 },\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n const currentDetail = SharingDetail.parse(details.items[0]);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const obj: BaseSharingDetails = {\n ...params,\n sharingDetailsId: params.sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel) this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<{\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n }>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId: body.assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n let currentDetail: SharingDetail;\n const sharingDetail = !detail.sharedId\n ? null\n : await this.detailsRepository.getOne(detail.sharedId);\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n"]}
@@ -32,6 +32,7 @@ interface UserToken {
32
32
  clientId?: string;
33
33
  roles?: string[];
34
34
  orgId?: string;
35
+ loginType?: string;
35
36
  }
36
37
 
37
38
  declare const ORGANIZATION_QRVEY = "org:0";
@@ -113,6 +114,7 @@ declare const checkUserAccessLevel: (args_0: {
113
114
  assetId: string;
114
115
  userId: string;
115
116
  clientId?: string;
117
+ loginType?: string;
116
118
  roles?: string[];
117
119
  orgId?: string;
118
120
  }) => Promise<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/assets-sharing",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "types": "dist/types/index.d.ts",
5
5
  "main": "dist/cjs/index.js",
6
6
  "exports": {
@@ -0,0 +1,7 @@
1
+ enum LOGIN_TYPES {
2
+ composer = 'qrveyLogin',
3
+ }
4
+
5
+ export function isComposer(type: string): boolean {
6
+ return type === LOGIN_TYPES.composer;
7
+ }
@@ -10,4 +10,5 @@ export interface UserToken {
10
10
  clientId?: string;
11
11
  roles?: string[];
12
12
  orgId?: string;
13
+ loginType?: string;
13
14
  }
@@ -2,6 +2,7 @@ import { inject, injectable } from 'tsyringe';
2
2
 
3
3
  import { ParamsFromTokenToUser } from '../../common/common.type';
4
4
  import { ORGANIZATION_QRVEY } from '../../common/constants';
5
+ import { isComposer } from '../../common/util';
5
6
  import { UserToken } from '../entities/types/user.type';
6
7
  import { User } from '../entities/user';
7
8
  import { UserRepositoryInterface } from '../interfaces/userRepository.interface';
@@ -18,14 +19,17 @@ export class FromTokenToUser {
18
19
  }: {
19
20
  body: UserToken;
20
21
  }): Promise<ParamsFromTokenToUser> {
21
- if (body?.clientId) {
22
+ const inComposer = isComposer(body.loginType || '');
23
+ if (!inComposer) {
22
24
  return {
23
- userId: body.clientId,
25
+ userId: body.clientId || '',
24
26
  roles: body.roles || [],
25
27
  orgId: body.orgId || '',
26
28
  };
27
29
  }
28
- const current = await this.userRepository.getOne(body.userId);
30
+ const current = await this.userRepository.getOne(
31
+ body.clientId || body.userId,
32
+ );
29
33
  if (!current) {
30
34
  return {
31
35
  userId: '',
@@ -16,17 +16,19 @@ export class CheckUserAccessLevel {
16
16
  userId,
17
17
  assetId,
18
18
  clientId,
19
+ loginType,
19
20
  roles,
20
21
  orgId,
21
22
  }: {
22
23
  assetId: string;
23
24
  userId: string;
24
25
  clientId?: string;
26
+ loginType?: string;
25
27
  roles?: string[];
26
28
  orgId?: string;
27
29
  }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {
28
30
  const user = await fromTokenToUser({
29
- body: { userId, clientId, roles, orgId },
31
+ body: { userId, clientId, roles, orgId, loginType },
30
32
  });
31
33
  const details = await this.detailsRepository.getList({
32
34
  data: { assetId, user },