@qrvey/assets-sharing 0.2.0 → 0.2.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/dist/cjs/common/constants.js +1 -0
- package/dist/cjs/common/constants.js.map +1 -1
- package/dist/cjs/sharing/services/upsert.js +3 -5
- package/dist/cjs/sharing/services/upsert.js.map +1 -1
- package/dist/esm/index.mjs +3 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/package.json +1 -1
- package/src/common/constants.ts +3 -2
- package/src/sharing/services/upsert.ts +6 -4
|
@@ -20,6 +20,7 @@ var SHARED_ORIGIN;
|
|
|
20
20
|
(function (SHARED_ORIGIN) {
|
|
21
21
|
SHARED_ORIGIN["INTERNAL"] = "INTERNAL";
|
|
22
22
|
SHARED_ORIGIN["EXTERNAL"] = "EXTERNAL";
|
|
23
|
+
SHARED_ORIGIN["UNKNOWN"] = "UNKNOWN";
|
|
23
24
|
})(SHARED_ORIGIN || (exports.SHARED_ORIGIN = SHARED_ORIGIN = {}));
|
|
24
25
|
var SHARE_TYPE;
|
|
25
26
|
(function (SHARE_TYPE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACvB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IACxC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;CACzC,CAAC;AAEW,QAAA,aAAa,GAAG;IACzB,uBAAuB,EAAE,OAAO;IAChC,aAAa,EAAE,mBAAW,CAAC,aAAa;IACxC,YAAY,EAAE,mBAAW,CAAC,YAAY;CACzC,CAAC;AAEW,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,uBAAS,CAAA;IACT,uBAAS,CAAA;AACb,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACvB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;IACxC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;CACzC,CAAC;AAEW,QAAA,aAAa,GAAG;IACzB,uBAAuB,EAAE,OAAO;IAChC,aAAa,EAAE,mBAAW,CAAC,aAAa;IACxC,YAAY,EAAE,mBAAW,CAAC,YAAY;CACzC,CAAC;AAEW,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAE1C,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,uBAAS,CAAA;IACT,uBAAS,CAAA;AACb,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,sCAAqB,CAAA;IACrB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACvB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,2CAA6B,CAAA;AACjC,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,uDAAY,CAAA;IACZ,iDAAS,CAAA;AACb,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAEY,QAAA,cAAc,GAAG,EAAE,CAAC"}
|
|
@@ -59,10 +59,7 @@ let UpsertSharing = class UpsertSharing {
|
|
|
59
59
|
return false;
|
|
60
60
|
}
|
|
61
61
|
case constants_1.ASSET_TYPE.DM: {
|
|
62
|
-
|
|
63
|
-
if (result)
|
|
64
|
-
return true;
|
|
65
|
-
return false;
|
|
62
|
+
return true;
|
|
66
63
|
}
|
|
67
64
|
default:
|
|
68
65
|
return false;
|
|
@@ -100,7 +97,8 @@ let UpsertSharing = class UpsertSharing {
|
|
|
100
97
|
return currentDetail;
|
|
101
98
|
}
|
|
102
99
|
async validateIfSharedWithExist(detail) {
|
|
103
|
-
if (detail.sharedOrigin === constants_1.SHARED_ORIGIN.EXTERNAL
|
|
100
|
+
if (detail.sharedOrigin === constants_1.SHARED_ORIGIN.EXTERNAL ||
|
|
101
|
+
detail.sharedOrigin === constants_1.SHARED_ORIGIN.UNKNOWN)
|
|
104
102
|
return true;
|
|
105
103
|
const isQrveyOrg = detail.sharedType === constants_1.SHARE_TYPE.ORGANIZATION &&
|
|
106
104
|
detail.sharedWith === constants_1.ORGANIZATION_QRVEY;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../../src/sharing/services/upsert.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAMgC;AAGhC,iDAAoD;AACpD,iDAA8C;AA2BvC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACtB,YAEqB,iBAA6C,EAE7C,iBAAoD,EAEpD,YAA0C,EAE1C,YAAgD,EAEhD,cAAuC,EAEvC,cAAuC;QAVvC,sBAAiB,GAAjB,iBAAiB,CAA4B;QAE7C,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,iBAAY,GAAZ,YAAY,CAA8B;QAE1C,iBAAY,GAAZ,YAAY,CAAoC;QAEhD,mBAAc,GAAd,cAAc,CAAyB;QAEvC,mBAAc,GAAd,cAAc,CAAyB;IACzD,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,IAAI,GAGP;QACG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,qBAAqB,CACjD,OAAO,EACP,IAAI,CAAC,SAAS,CACjB,CAAC;QACF,IAAI,CAAC,YAAY;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,cAAuB,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACV,cAAc,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,MAAM,aAAa,GAAG;gBAClB,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,SAAS;aAC5B,CAAC;YACF,cAAc,GAAG,iBAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,WAAW,GAAoB,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG;YAAE,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvD,cAAc,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAC9B,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,OAAO,EAAE,CAC3B,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAC/B,OAAe,EACf,SAAqB;QAErB,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,sBAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACxB,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,KAAK,sBAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../../src/sharing/services/upsert.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -51,6 +51,7 @@ var ASSET_TYPE = /* @__PURE__ */ ((ASSET_TYPE2) => {
|
|
|
51
51
|
var SHARED_ORIGIN = /* @__PURE__ */ ((SHARED_ORIGIN3) => {
|
|
52
52
|
SHARED_ORIGIN3["INTERNAL"] = "INTERNAL";
|
|
53
53
|
SHARED_ORIGIN3["EXTERNAL"] = "EXTERNAL";
|
|
54
|
+
SHARED_ORIGIN3["UNKNOWN"] = "UNKNOWN";
|
|
54
55
|
return SHARED_ORIGIN3;
|
|
55
56
|
})(SHARED_ORIGIN || {});
|
|
56
57
|
var SHARE_TYPE = /* @__PURE__ */ ((SHARE_TYPE3) => {
|
|
@@ -875,10 +876,7 @@ var UpsertSharing = class {
|
|
|
875
876
|
return false;
|
|
876
877
|
}
|
|
877
878
|
case "DM" /* DM */: {
|
|
878
|
-
|
|
879
|
-
if (result)
|
|
880
|
-
return true;
|
|
881
|
-
return false;
|
|
879
|
+
return true;
|
|
882
880
|
}
|
|
883
881
|
default:
|
|
884
882
|
return false;
|
|
@@ -926,7 +924,7 @@ var UpsertSharing = class {
|
|
|
926
924
|
return currentDetail;
|
|
927
925
|
}
|
|
928
926
|
async validateIfSharedWithExist(detail) {
|
|
929
|
-
if (detail.sharedOrigin === "EXTERNAL" /* EXTERNAL */)
|
|
927
|
+
if (detail.sharedOrigin === "EXTERNAL" /* EXTERNAL */ || detail.sharedOrigin === "UNKNOWN" /* UNKNOWN */)
|
|
930
928
|
return true;
|
|
931
929
|
const isQrveyOrg = detail.sharedType === "ORGANIZATION" /* ORGANIZATION */ && detail.sharedWith === ORGANIZATION_QRVEY;
|
|
932
930
|
if (isQrveyOrg)
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/context.ts","../../src/quser/implementations/group.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/quser/implementations/group.repository.ts","../../src/quser/implementations/user.model.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/dm.model.ts","../../src/sharing/implementations/dm.repository.ts","../../src/sharing/implementations/dx.model.ts","../../src/sharing/implementations/dx.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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,aAAN,cAAyB,WAAW;AAa3C;AAba,WACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO;AACX;AAJS,WAMF,UAAU;AAAA,EACb,SAAS;AAAA,IACL,MAAM;AAAA,EACV;AACJ;AAVS,WAYF,SAAS,cAAc;;;AEhBlC,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;;;AERO,IAAM,kBAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,UAAU;AAAA,EACpB;AAAA,EAEA,MAAM,OAAO,YAAyD;AAClE,UAAM,SAAS;AAAA,MACX,SAAS,CAAC,KAAK,OAAO,WAAW,UAAU,CAAC;AAAA,IAChD;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AACJ;;;ACnBA,SAAS,cAAAC,mBAAkB;AAIpB,IAAM,YAAN,cAAwBA,YAAW;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;;;AChB3B,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,cAAAA,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,gBACF,SACA,YACmC;AACnC,UAAM,aAAa;AAAA,MACf,KAAK,OAAO,YAAY,OAAO;AAAA,MAC/B,KAAK,OAAO,eAAe,UAAU;AAAA,IACzC;AACA,UAAM,SAAS;AAAA,MACX,SAAS;AAAA,IACb;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;AA5G5D;AA6GQ,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;;;ACzJA,SAAS,cAAAA,mBAAkB;AAIpB,IAAM,wBAAN,cAAoCA,YAAW;AAgBtD;AAhBa,sBACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO,GAAG,cAAc,YAAY;AACxC;AAJS,sBAMF,UAAU;AAAA,EACb,mBAAmB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AACJ;AAZS,sBAcF,SAAS;AAdP,sBAeF,UAAU;;;ACfd,IAAM,4BAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,qBAAqB;AAAA,EAC/B;AAAA,EAEA,MAAM,IACF,YAC6C;AAC7C,UAAM,aAAa,CAAC,KAAK,OAAO,qBAAqB,UAAU,CAAC;AAChE,UAAM,SAAS;AAAA,MACX,SAAS;AAAA,IACb;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AACJ;;;ACtBA,SAAS,cAAAA,mBAAkB;AAIpB,IAAM,kBAAN,cAA8BA,YAAW;AAyBhD;AAzBa,gBACF,QAAQ;AAAA,EACX,MAAM,GAAG,cAAc,aAAa;AAAA,EACpC,OAAO,GAAG,cAAc,YAAY;AACxC;AAJS,gBAMF,UAAU;AAAA,EACb,aAAa,EAAE,MAAM,UAAU,SAAS,KAAK;AAAA,EAC7C,aAAa,EAAE,MAAM,SAAS;AAAA,EAC9B,WAAW,EAAE,MAAM,SAAS;AAAA,EAC5B,QAAQ,EAAE,MAAM,SAAS;AAAA,EACzB,SAAS,EAAE,MAAM,SAAS;AAAA,EAC1B,OAAO,EAAE,MAAM,SAAS;AAAA,EACxB,cAAc,EAAE,MAAM,SAAS;AACnC;AAdS,gBAgBF,UAAU;AAAA,EACb,aAAa;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,YAAY,aAAa;AAAA,EACvC;AACJ;AArBS,gBAuBF,SAAS;AAvBP,gBAwBF,UAAU;;;ACxBd,IAAM,sBAAN,cACK,eAEZ;AAAA,EACI,cAAc;AACV,UAAM,eAAe;AAAA,EACzB;AAAA,EAEA,MAAM,IAAI,YAA6D;AACnE,UAAM,MAAM,aAAa,UAAU;AACnC,UAAM,aAAa,CAAC,KAAK,OAAO,eAAe,GAAG,CAAC;AACnD,UAAM,SAAS;AAAA,MACX,SAAS;AAAA,IACb;AACA,UAAM,WAAW,MAAM,MAAM,SAAS,MAAM;AAC5C,WAAO;AAAA,EACX;AACJ;;;ACrBA,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;;;AfpBA,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AACA,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AACA,UAAU,SAAkC,kBAAkB,cAAc;AAC5E,UAAU,SAAkC,kBAAkB,eAAe;AAC7E,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AACA,UAAU;AAAA,EACN;AAAA,EACA;AACJ;AAEO,IAAM,UAAU;;;AgBlCvB,SAAS,QAAQ,kBAAkB;;;ACI5B,SAAS,WAAW,MAAuB;AAC9C,SAAO,SAAS;AACpB;;;ACJO,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,YAAoB;AAC3B,WAAO,KAAK;AAAA,EAChB;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;;;AFpBO,IAAM,kBAAN,MAAsB;AAAA,EACzB,YAEqB,gBACnB;AADmB;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEmC;AApBvC;AAqBQ,UAAM,UAAU,MAAM,KAAK,eAAe;AAAA,MACtC,KAAK,YAAY,KAAK;AAAA,IAC1B;AACA,QAAI,SAAS;AACT,YAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,aAAO;AAAA,QACH,QAAQ,KAAK;AAAA,QACb,OAAO,KAAK;AAAA,QACZ,QAAO,UAAK,UAAL,YAAc;AAAA,MACzB;AAAA,IACJ;AAEA,UAAM,aAAa,WAAW,KAAK,aAAa,EAAE;AAClD,QAAI,CAAC,YAAY;AACb,aAAO;AAAA,QACH,QAAQ,KAAK,YAAY;AAAA,QACzB,OAAO,KAAK,SAAS,CAAC;AAAA,QACtB,OAAO,KAAK,SAAS;AAAA,MACzB;AAAA,IACJ;AAEA,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,OAAO,CAAC;AAAA,MACR,OAAO;AAAA,IACX;AAAA,EACJ;AACJ;AAtCa,kBAAN;AAAA,EADN,WAAW;AAAA,EAGH,0BAAO,gBAAgB;AAAA,GAFnB;;;AGVb,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,eAAe,OAAO,gBAAgB;AAC7C,WAAK,cAAc,OAAO;AAC9B,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;AA5I5D;AA6IQ,YAAO,kBAAa,KAAK,MAAlB,YAAuB;AAAA,EAClC;AACJ;;;ADvIO,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,IACA;AAAA,EACJ,GAO0D;AACtD,UAAM,OAAO,MAAM,gBAAgB;AAAA,MAC/B,MAAM,EAAE,QAAQ,UAAU,OAAO,OAAO,UAAU;AAAA,IACtD,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,IAC3D,CAAC;AACD,QAAI,QAAQ,MAAM,WAAW;AACzB,aAAO,EAAE,qBAA0B,aAAa,OAAO;AAE3D,UAAM,WAAW;AAAA,MACb,kBAAgB,GAAG;AAAA,MACnB,kBAAgB,GAAG;AAAA,MACnB,kCAAwB,GAAG;AAAA,IAC/B;AACA,UAAM,iBAAiB,QAAQ,MAAM,OAAO,CAAC,MAAM,YAAY;AAC3D,YAAM,eAAe,SAAS,KAAK,WAAyB;AAC5D,YAAM,kBAAkB,SAAS,QAAQ,WAAyB;AAClE,YAAM,WACF,kBAAkB,gBACjB,oBAAoB,gBACjB,QAAQ,eAAe,KAAK;AAEpC,UAAI;AAAU,eAAO;AACrB,aAAO;AAAA,IACX,CAAC;AAED,UAAM,gBAAgB,cAAc,MAAM,cAAc;AACxD,WAAO;AAAA,MACH,OAAO,cAAc;AAAA,MACrB,aAAa,cAAc;AAAA,IAC/B;AAAA,EACJ;AACJ;AAtDa,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;AAa5B,IAAM,cAAN,MAAkB;AAAA,EACrB,YAEqB,mBAEA,mBACnB;AAHmB;AAEA;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEuC;AAzB3C;AA0BQ,UAAM;AAAA,MACF,MAAM,EAAE,QAAQ;AAAA,MAChB;AAAA,IACJ,IAAI;AACJ,UAAM,UAAU,MAAM,KAAK,kBAAkB,OAAO,OAAO;AAE3D,QAAI,CAAC;AAAS,aAAO;AAErB,UAAM,UACF,KAAK,aAAW,UAAK,YAAL,mBAAc,UAAS,IACjC,KAAK,UACL,CAAC,EAAE,QAAQ,cAAc,WAAW,MAAM,CAAC;AAErD,UAAM,gBAAgB,MAAM,KAAK,kBAAkB,QAAQ;AAAA,MACvD,MAAM,EAAE,QAAQ;AAAA,MAChB;AAAA,MACA;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;AAvCa,cAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,mBAAmB;AAAA,EAE1B,mBAAAA,QAAO,0BAA0B;AAAA,GAJ7B;;;ACbb,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;;;AD5CO,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAEqB,mBAEA,mBAEA,cAEA,cAEA,gBAEA,gBACnB;AAXmB;AAEA;AAEA;AAEA;AAEA;AAEA;AAAA,EAClB;AAAA,EAEH,MAAa,QAAQ;AAAA,IACjB;AAAA,EACJ,GAEsC;AAClC,UAAM,UAAU,KAAK;AAErB,UAAM,eAAe,MAAM,KAAK;AAAA,MAC5B;AAAA,MACA,KAAK;AAAA,IACT;AACA,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,iBAAiB,OAAO,YAAY;AAExD,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;AAAA,QACA,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,sBACV,SACA,WACgB;AAChB,YAAQ,WAAW;AAAA,MACf,oBAAoB;AAChB,cAAM,SAAS,MAAM,KAAK,aAAa,IAAI,OAAO;AAClD,YAAI;AAAQ,iBAAO;AACnB,eAAO;AAAA,MACX;AAAA,MACA,oBAAoB;AAChB,cAAM,SAAS,MAAM,KAAK,aAAa,IAAI,OAAO;AAClD,YAAI;AAAQ,iBAAO;AACnB,eAAO;AAAA,MACX;AAAA,MAEA;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEA,MAAc,WACV,SACA,MACwB;AACxB,UAAM,cAA+B,CAAC;AACtC,eAAW,UAAU,MAAM;AACvB,YAAM,gBAAgB,MAAM,KAAK,kBAAkB,SAAS,MAAM;AAClE,UAAI;AAAe,oBAAY,KAAK,aAAa;AAAA,IACrD;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAc,kBACV,SACA,QAC6B;AAlIrC;AAmIQ,QAAI;AACJ,UAAM,UAAU,MAAM,KAAK,0BAA0B,MAAM;AAC3D,QAAI,CAAC;AAAS,aAAO;AAErB,QAAI,gBAAgB,MAAM,KAAK,kBAAkB;AAAA,MAC7C;AAAA,MACA,OAAO;AAAA,IACX;AACA,QAAI,CAAC,iBAAiB,OAAO,UAAU;AACnC,sBAAgB,MAAM,KAAK,kBAAkB;AAAA,QACzC,OAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,eAAe;AACf,sBAAgB,cAAc,MAAM,aAAa;AACjD,oBAAc,OAAO,MAAM;AAC3B,YAAM,KAAK,kBAAkB;AAAA,QACzB,cAAc;AAAA,QACd,cAAc,QAAQ;AAAA,MAC1B;AAAA,IACJ,OAAO;AACH,YAAM,gBAAgB;AAAA,QAClB;AAAA,QACA,QAAO,YAAO,UAAP,YAAgB;AAAA,SACpB;AAEP,sBAAgB,cAAc,OAAO,aAAa;AAClD,YAAM,KAAK,kBAAkB,OAAO,cAAc,QAAQ,CAAC;AAAA,IAC/D;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAc,0BACV,QACgB;AAChB,QAAI,OAAO;AAAyC,aAAO;AAE3D,UAAM,aACF,OAAO,oDACP,OAAO,eAAe;AAC1B,QAAI;AAAY,aAAO;AAEvB,QAAI,OAAO,kCAAgC;AACvC,YAAM,OAAO,MAAM,KAAK,eAAe,OAAO,OAAO,UAAU;AAC/D,UAAI;AAAM,eAAO;AAAA,IACrB;AAEA,QAAI,OAAO,kCAAgC;AACvC,YAAM,OAAO,MAAM,KAAK,eAAe,OAAO,OAAO,UAAU;AAC/D,UAAI;AAAM,eAAO;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAc,cACV,MACa;AACb,eAAW,UAAU,MAAM;AACvB,YAAM,KAAK,kBAAkB,OAAO,OAAO,QAAQ;AAAA,IACvD;AAAA,EACJ;AACJ;AA3Ja,gBAAN;AAAA,EADNA,YAAW;AAAA,EAGH,mBAAAD,QAAO,mBAAmB;AAAA,EAE1B,mBAAAA,QAAO,0BAA0B;AAAA,EAEjC,mBAAAA,QAAO,cAAc;AAAA,EAErB,mBAAAA,QAAO,cAAc;AAAA,EAErB,mBAAAA,QAAO,gBAAgB;AAAA,EAEvB,mBAAAA,QAAO,gBAAgB;AAAA,GAZnB;;;AxB/BN,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 { GroupRepository } from './quser/implementations/group.repository';\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type RoleRepositoryInterface } from './quser/interfaces/rolesRepository.interface';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { DownloadManagerRepository } from './sharing/implementations/dm.repository';\nimport { DashboardRepository } from './sharing/implementations/dx.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type DashboardRepositoryInterface } from './sharing/interfaces/dashboardRepository.interface';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type DownloadManagerRepositoryInterface } from './sharing/interfaces/downloadManagerRepository.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);\ncontainer.register<RoleRepositoryInterface>('RoleRepository', GroupRepository);\ncontainer.register<DashboardRepositoryInterface>(\n 'dxRepository',\n DashboardRepository,\n);\ncontainer.register<DownloadManagerRepositoryInterface>(\n 'dmRepository',\n DownloadManagerRepository,\n);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class GroupModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,\n alias: 'qv_groups',\n };\n\n static columns = {\n groupid: {\n type: 'string',\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 { GroupModel } from './group.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { RoleRepositoryInterface } from '../interfaces/rolesRepository.interface';\n\nexport class GroupRepository\n extends BaseRepository\n implements RoleRepositoryInterface\n{\n constructor() {\n super(GroupModel);\n }\n\n async getOne(identifier: string): Promise<{ groupid: string } | null> {\n const params = {\n filters: [this.filter('groupid', identifier)],\n };\n const response = await super.findItem(params);\n return response as { groupid: string };\n }\n}\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","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 getBySharedWith(\n assetId: string,\n sharedWith: string,\n ): Promise<SharingDetailsTable | null> {\n const filterList = [\n this.filter('asset_id', assetId),\n this.filter('shared_with', sharedWith),\n ];\n const params = {\n filters: filterList,\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 DownloadManagerSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`,\n };\n\n static columns = {\n downloadManagerId: {\n primary: true,\n type: 'String',\n columnId: true,\n },\n };\n\n static schema = 'exports';\n static usePool = true;\n}\n","import { DownloadManagerSchema } from './dm.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\n\nexport class DownloadManagerRepository\n extends BaseRepository\n implements DownloadManagerRepositoryInterface\n{\n constructor() {\n super(DownloadManagerSchema);\n }\n\n async get(\n identifier: string,\n ): Promise<{ downloadManagerId: string } | null> {\n const filterList = [this.filter('downloadManagerId', identifier)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { downloadManagerId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DashboardSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`,\n };\n\n static columns = {\n ResourceUID: { type: 'string', primary: true },\n dashboardId: { type: 'string' },\n contentId: { type: 'string' },\n userId: { type: 'string' },\n ownerId: { type: 'string' },\n appId: { type: 'string' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n ResourceUID: {\n name: 'MetadataByResource',\n columns: ['Metadata', 'ResourceUID'],\n },\n };\n\n static schema = 'dashboard_x';\n static usePool = true;\n}\n","import { DashboardSchema } from './dx.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\n\nexport class DashboardRepository\n extends BaseRepository\n implements DashboardRepositoryInterface\n{\n constructor() {\n super(DashboardSchema);\n }\n\n async get(identifier: string): Promise<{ dashboardId: string } | null> {\n const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;\n const filterList = [this.filter('ResourceUID', uid)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { dashboardId: string };\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 current = await this.userRepository.getOne(\n body.clientId || body.userId,\n );\n if (current) {\n const user = new User(current);\n return {\n userId: user.getUserId,\n roles: user.getGroups,\n orgId: body.orgId ?? ORGANIZATION_QRVEY,\n };\n }\n\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\n return {\n userId: '',\n roles: [],\n orgId: '',\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 getUserId(): string {\n return this.userId;\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, SHARE_TYPE } 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 });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n\n const priority = {\n [SHARE_TYPE.USER]: 3,\n [SHARE_TYPE.ROLE]: 2,\n [SHARE_TYPE.ORGANIZATION]: 1,\n };\n const priorityDetail = details.items.reduce((best, current) => {\n const bestPriority = priority[best.shared_type as SHARE_TYPE];\n const currentPriority = priority[current.shared_type as SHARE_TYPE];\n const isBetter =\n currentPriority > bestPriority ||\n (currentPriority === bestPriority &&\n current.access_level > best.access_level);\n\n if (isBetter) return current;\n return best;\n });\n\n const currentDetail = SharingDetail.parse(priorityDetail);\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 || params.accessLevel === 0)\n 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 { Sorting } from '../../common/common.type';\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\n const sorting: Array<Sorting> =\n body.sorting && body.sorting?.length > 0\n ? body.sorting\n : [{ column: 'created_at', direction: 'ASC' }];\n\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n sorting,\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 { RoleRepositoryInterface } from '../../quser/interfaces/rolesRepository.interface';\nimport { UserRepositoryInterface } from '../../quser/interfaces/userRepository.interface';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\ninterface SharingWith {\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\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<SharingWith>;\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 @inject('dxRepository')\n private readonly dxRepository: DashboardRepositoryInterface,\n @inject('dmRepository')\n private readonly dmRepository: DownloadManagerRepositoryInterface,\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n @inject('RoleRepository')\n private readonly roleRepository: RoleRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n\n const isValidAsset = await this.validateIfAssetExists(\n assetId,\n body.assetType,\n );\n if (!isValidAsset)\n throw new Error(`Asset with ID ${assetId} not found`);\n\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,\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 validateIfAssetExists(\n assetId: string,\n assetType: ASSET_TYPE,\n ): Promise<boolean> {\n switch (assetType) {\n case ASSET_TYPE.DX: {\n const result = await this.dxRepository.get(assetId);\n if (result) return true;\n return false;\n }\n case ASSET_TYPE.DM: {\n const result = await this.dmRepository.get(assetId);\n if (result) return true;\n return false;\n }\n\n default:\n return false;\n }\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 const currentDetail = await this.addSpecificDetail(assetId, detail);\n if (currentDetail) sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async addSpecificDetail(\n assetId: string,\n detail: SharingWith,\n ): Promise<SharingDetail | null> {\n let currentDetail: SharingDetail;\n const isValid = await this.validateIfSharedWithExist(detail);\n if (!isValid) return null;\n\n let sharingDetail = await this.detailsRepository.getBySharedWith(\n assetId,\n detail.sharedWith,\n );\n if (!sharingDetail && detail.sharedId) {\n sharingDetail = await this.detailsRepository.getOne(\n detail.sharedId,\n );\n }\n\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 return currentDetail;\n }\n\n private async validateIfSharedWithExist(\n detail: SharingWith,\n ): Promise<boolean> {\n if (detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL) return true;\n\n const isQrveyOrg =\n detail.sharedType === SHARE_TYPE.ORGANIZATION &&\n detail.sharedWith === ORGANIZATION_QRVEY;\n if (isQrveyOrg) return true; // NOTE: If more Internal Organization arrive, need to change this validation\n\n if (detail.sharedType === SHARE_TYPE.USER) {\n const user = await this.userRepository.getOne(detail.sharedWith);\n if (user) return true;\n }\n\n if (detail.sharedType === SHARE_TYPE.ROLE) {\n const role = await this.roleRepository.getOne(detail.sharedWith);\n if (role) return true;\n }\n\n return false;\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/group.model.ts","../../src/common/constants.ts","../../src/common/persistence/base.ts","../../src/common/persistence/poolClient.ts","../../src/quser/implementations/group.repository.ts","../../src/quser/implementations/user.model.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/dm.model.ts","../../src/sharing/implementations/dm.repository.ts","../../src/sharing/implementations/dx.model.ts","../../src/sharing/implementations/dx.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 { GroupRepository } from './quser/implementations/group.repository';\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type RoleRepositoryInterface } from './quser/interfaces/rolesRepository.interface';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { DownloadManagerRepository } from './sharing/implementations/dm.repository';\nimport { DashboardRepository } from './sharing/implementations/dx.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { type DashboardRepositoryInterface } from './sharing/interfaces/dashboardRepository.interface';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type DownloadManagerRepositoryInterface } from './sharing/interfaces/downloadManagerRepository.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);\ncontainer.register<RoleRepositoryInterface>('RoleRepository', GroupRepository);\ncontainer.register<DashboardRepositoryInterface>(\n 'dxRepository',\n DashboardRepository,\n);\ncontainer.register<DownloadManagerRepositoryInterface>(\n 'dmRepository',\n DownloadManagerRepository,\n);\n\nexport const Context = container;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class GroupModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,\n alias: 'qv_groups',\n };\n\n static columns = {\n groupid: {\n type: 'string',\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', // for org:0\n EXTERNAL = 'EXTERNAL', // for orgs different that 0\n UNKNOWN = 'UNKNOWN', // without orgId\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 { GroupModel } from './group.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { RoleRepositoryInterface } from '../interfaces/rolesRepository.interface';\n\nexport class GroupRepository\n extends BaseRepository\n implements RoleRepositoryInterface\n{\n constructor() {\n super(GroupModel);\n }\n\n async getOne(identifier: string): Promise<{ groupid: string } | null> {\n const params = {\n filters: [this.filter('groupid', identifier)],\n };\n const response = await super.findItem(params);\n return response as { groupid: string };\n }\n}\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","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 getBySharedWith(\n assetId: string,\n sharedWith: string,\n ): Promise<SharingDetailsTable | null> {\n const filterList = [\n this.filter('asset_id', assetId),\n this.filter('shared_with', sharedWith),\n ];\n const params = {\n filters: filterList,\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 DownloadManagerSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`,\n };\n\n static columns = {\n downloadManagerId: {\n primary: true,\n type: 'String',\n columnId: true,\n },\n };\n\n static schema = 'exports';\n static usePool = true;\n}\n","import { DownloadManagerSchema } from './dm.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\n\nexport class DownloadManagerRepository\n extends BaseRepository\n implements DownloadManagerRepositoryInterface\n{\n constructor() {\n super(DownloadManagerSchema);\n }\n\n async get(\n identifier: string,\n ): Promise<{ downloadManagerId: string } | null> {\n const filterList = [this.filter('downloadManagerId', identifier)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { downloadManagerId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DashboardSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`,\n };\n\n static columns = {\n ResourceUID: { type: 'string', primary: true },\n dashboardId: { type: 'string' },\n contentId: { type: 'string' },\n userId: { type: 'string' },\n ownerId: { type: 'string' },\n appId: { type: 'string' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n ResourceUID: {\n name: 'MetadataByResource',\n columns: ['Metadata', 'ResourceUID'],\n },\n };\n\n static schema = 'dashboard_x';\n static usePool = true;\n}\n","import { DashboardSchema } from './dx.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\n\nexport class DashboardRepository\n extends BaseRepository\n implements DashboardRepositoryInterface\n{\n constructor() {\n super(DashboardSchema);\n }\n\n async get(identifier: string): Promise<{ dashboardId: string } | null> {\n const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;\n const filterList = [this.filter('ResourceUID', uid)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { dashboardId: string };\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 current = await this.userRepository.getOne(\n body.clientId || body.userId,\n );\n if (current) {\n const user = new User(current);\n return {\n userId: user.getUserId,\n roles: user.getGroups,\n orgId: body.orgId ?? ORGANIZATION_QRVEY,\n };\n }\n\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\n return {\n userId: '',\n roles: [],\n orgId: '',\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 getUserId(): string {\n return this.userId;\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, SHARE_TYPE } 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 });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n\n const priority = {\n [SHARE_TYPE.USER]: 3,\n [SHARE_TYPE.ROLE]: 2,\n [SHARE_TYPE.ORGANIZATION]: 1,\n };\n const priorityDetail = details.items.reduce((best, current) => {\n const bestPriority = priority[best.shared_type as SHARE_TYPE];\n const currentPriority = priority[current.shared_type as SHARE_TYPE];\n const isBetter =\n currentPriority > bestPriority ||\n (currentPriority === bestPriority &&\n current.access_level > best.access_level);\n\n if (isBetter) return current;\n return best;\n });\n\n const currentDetail = SharingDetail.parse(priorityDetail);\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 || params.accessLevel === 0)\n 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 { Sorting } from '../../common/common.type';\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\n const sorting: Array<Sorting> =\n body.sorting && body.sorting?.length > 0\n ? body.sorting\n : [{ column: 'created_at', direction: 'ASC' }];\n\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n sorting,\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 { RoleRepositoryInterface } from '../../quser/interfaces/rolesRepository.interface';\nimport { UserRepositoryInterface } from '../../quser/interfaces/userRepository.interface';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\ninterface SharingWith {\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\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<SharingWith>;\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 @inject('dxRepository')\n private readonly dxRepository: DashboardRepositoryInterface,\n @inject('dmRepository')\n private readonly dmRepository: DownloadManagerRepositoryInterface,\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n @inject('RoleRepository')\n private readonly roleRepository: RoleRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n\n const isValidAsset = await this.validateIfAssetExists(\n assetId,\n body.assetType,\n );\n if (!isValidAsset)\n throw new Error(`Asset with ID ${assetId} not found`);\n\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,\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 validateIfAssetExists(\n assetId: string,\n assetType: ASSET_TYPE,\n ): Promise<boolean> {\n switch (assetType) {\n case ASSET_TYPE.DX: {\n const result = await this.dxRepository.get(assetId);\n if (result) return true;\n return false;\n }\n case ASSET_TYPE.DM: {\n return true;\n }\n\n default:\n return false;\n }\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 const currentDetail = await this.addSpecificDetail(assetId, detail);\n if (currentDetail) sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async addSpecificDetail(\n assetId: string,\n detail: SharingWith,\n ): Promise<SharingDetail | null> {\n let currentDetail: SharingDetail;\n const isValid = await this.validateIfSharedWithExist(detail);\n if (!isValid) return null;\n\n let sharingDetail = await this.detailsRepository.getBySharedWith(\n assetId,\n detail.sharedWith,\n );\n if (!sharingDetail && detail.sharedId) {\n sharingDetail = await this.detailsRepository.getOne(\n detail.sharedId,\n );\n }\n\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 return currentDetail;\n }\n\n private async validateIfSharedWithExist(\n detail: SharingWith,\n ): Promise<boolean> {\n if (\n detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL ||\n detail.sharedOrigin === SHARED_ORIGIN.UNKNOWN\n )\n return true;\n\n const isQrveyOrg =\n detail.sharedType === SHARE_TYPE.ORGANIZATION &&\n detail.sharedWith === ORGANIZATION_QRVEY;\n if (isQrveyOrg) return true; // NOTE: If more Internal Organization arrive, need to change this validation\n\n if (detail.sharedType === SHARE_TYPE.USER) {\n const user = await this.userRepository.getOne(detail.sharedWith);\n if (user) return true;\n }\n\n if (detail.sharedType === SHARE_TYPE.ROLE) {\n const role = await this.roleRepository.getOne(detail.sharedWith);\n if (role) return true;\n }\n\n return false;\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"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -41,8 +41,9 @@ declare enum ASSET_TYPE {
|
|
|
41
41
|
DM = "DM"
|
|
42
42
|
}
|
|
43
43
|
declare enum SHARED_ORIGIN {
|
|
44
|
-
INTERNAL = "INTERNAL"
|
|
45
|
-
EXTERNAL = "EXTERNAL"
|
|
44
|
+
INTERNAL = "INTERNAL",// for org:0
|
|
45
|
+
EXTERNAL = "EXTERNAL",// for orgs different that 0
|
|
46
|
+
UNKNOWN = "UNKNOWN"
|
|
46
47
|
}
|
|
47
48
|
declare enum SHARE_TYPE {
|
|
48
49
|
USER = "USER",
|
package/package.json
CHANGED
package/src/common/constants.ts
CHANGED
|
@@ -17,8 +17,9 @@ export enum ASSET_TYPE {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export enum SHARED_ORIGIN {
|
|
20
|
-
INTERNAL = 'INTERNAL',
|
|
21
|
-
EXTERNAL = 'EXTERNAL',
|
|
20
|
+
INTERNAL = 'INTERNAL', // for org:0
|
|
21
|
+
EXTERNAL = 'EXTERNAL', // for orgs different that 0
|
|
22
|
+
UNKNOWN = 'UNKNOWN', // without orgId
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export enum SHARE_TYPE {
|
|
@@ -103,9 +103,7 @@ export class UpsertSharing {
|
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
105
|
case ASSET_TYPE.DM: {
|
|
106
|
-
|
|
107
|
-
if (result) return true;
|
|
108
|
-
return false;
|
|
106
|
+
return true;
|
|
109
107
|
}
|
|
110
108
|
|
|
111
109
|
default:
|
|
@@ -165,7 +163,11 @@ export class UpsertSharing {
|
|
|
165
163
|
private async validateIfSharedWithExist(
|
|
166
164
|
detail: SharingWith,
|
|
167
165
|
): Promise<boolean> {
|
|
168
|
-
if (
|
|
166
|
+
if (
|
|
167
|
+
detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL ||
|
|
168
|
+
detail.sharedOrigin === SHARED_ORIGIN.UNKNOWN
|
|
169
|
+
)
|
|
170
|
+
return true;
|
|
169
171
|
|
|
170
172
|
const isQrveyOrg =
|
|
171
173
|
detail.sharedType === SHARE_TYPE.ORGANIZATION &&
|