@cryptexlabs/codex-nodejs-common 0.1.10 → 0.1.14
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/lib/package.json +2 -1
- package/lib/src/auth/http-authz-guard.util.d.ts +2 -0
- package/lib/src/auth/http-authz-guard.util.js +5 -0
- package/lib/src/auth/http-authz-guard.util.js.map +1 -1
- package/lib/src/decorator/api-pagination.d.ts +1 -0
- package/lib/src/decorator/api-pagination.js +21 -0
- package/lib/src/decorator/api-pagination.js.map +1 -0
- package/lib/src/decorator/index.d.ts +1 -0
- package/lib/src/decorator/index.js +1 -0
- package/lib/src/decorator/index.js.map +1 -1
- package/lib/src/util/array.util.d.ts +5 -0
- package/lib/src/util/array.util.js +16 -0
- package/lib/src/util/array.util.js.map +1 -0
- package/lib/src/util/index.d.ts +2 -0
- package/lib/src/util/index.js +2 -0
- package/lib/src/util/index.js.map +1 -1
- package/lib/src/util/string.util.js.map +1 -1
- package/package.json +2 -1
- package/src/auth/http-authz-guard.util.ts +7 -0
- package/src/decorator/api-pagination.ts +19 -0
- package/src/decorator/index.ts +1 -0
- package/src/util/array.util.ts +12 -0
- package/src/util/index.ts +2 -0
- package/src/util/string.util.ts +0 -1
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Common code for Assistant applications",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"@types/jest": "^27.0.1",
|
|
48
48
|
"@types/js-yaml": "^3.12.5",
|
|
49
49
|
"@types/supertest": "^2.0.10",
|
|
50
|
+
"@types/uuid": "^8.3.1",
|
|
50
51
|
"husky": "^4.3.6",
|
|
51
52
|
"jest": "^27.0.6",
|
|
52
53
|
"nodemon": "^2.0.6",
|
|
@@ -3,6 +3,8 @@ import { AuthorizationRequestInterface } from "./authorization-request.interface
|
|
|
3
3
|
export declare class HttpAuthzGuardUtil {
|
|
4
4
|
private readonly context;
|
|
5
5
|
private _token;
|
|
6
|
+
readonly params: any;
|
|
7
|
+
readonly query: any;
|
|
6
8
|
constructor(context: ExecutionContext);
|
|
7
9
|
isAuthorized(...authzRequests: AuthorizationRequestInterface[]): boolean;
|
|
8
10
|
private _doesScopeAuthorizeRequest;
|
|
@@ -19,6 +19,8 @@ class HttpAuthzGuardUtil {
|
|
|
19
19
|
throw new common_1.HttpException("Unauthorized", common_1.HttpStatus.UNAUTHORIZED);
|
|
20
20
|
}
|
|
21
21
|
this._token = decodedToken;
|
|
22
|
+
this.params = request.params;
|
|
23
|
+
this.query = request.query;
|
|
22
24
|
}
|
|
23
25
|
isAuthorized(...authzRequests) {
|
|
24
26
|
const scopes = this._token.scopes;
|
|
@@ -37,6 +39,9 @@ class HttpAuthzGuardUtil {
|
|
|
37
39
|
}
|
|
38
40
|
for (let i = 0; i < authzRequests.length; i++) {
|
|
39
41
|
const request = authzRequests[i];
|
|
42
|
+
if (!authorizationAllowances[i]) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
40
45
|
const allowance = authorizationAllowances[i];
|
|
41
46
|
if (!allowance.isRequestAllowed(request)) {
|
|
42
47
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-authz-guard.util.js","sourceRoot":"","sources":["../../../src/auth/http-authz-guard.util.ts"],"names":[],"mappings":";;;AAAA,2CAA6E;AAC7E,oCAAoC;AAEpC,uEAAmE;AAEnE,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"http-authz-guard.util.js","sourceRoot":"","sources":["../../../src/auth/http-authz-guard.util.ts"],"names":[],"mappings":";;;AAAA,2CAA6E;AAC7E,oCAAoC;AAEpC,uEAAmE;AAEnE,MAAa,kBAAkB;IAK7B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAmB,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,YAAY,CAAC,GAAG,aAA8C;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,0BAA0B,CAChC,KAAa,EACb,aAA8C;QAE9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACxC,uBAAuB,CAAC,IAAI,CAC1B,IAAI,gDAAsB,CACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EACZ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CACb,CACF,CAAC;SACH;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACd;YACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;gBACxC,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnED,gDAmEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ApiPagination(): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiPagination = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
function ApiPagination() {
|
|
7
|
+
return common_1.applyDecorators(...[
|
|
8
|
+
swagger_1.ApiQuery({
|
|
9
|
+
name: "page",
|
|
10
|
+
required: true,
|
|
11
|
+
example: 1,
|
|
12
|
+
}),
|
|
13
|
+
swagger_1.ApiQuery({
|
|
14
|
+
name: "pageSize",
|
|
15
|
+
required: true,
|
|
16
|
+
example: 10,
|
|
17
|
+
}),
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
exports.ApiPagination = ApiPagination;
|
|
21
|
+
//# sourceMappingURL=api-pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-pagination.js","sourceRoot":"","sources":["../../../src/decorator/api-pagination.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,2CAAiD;AAEjD,SAAgB,aAAa;IAC3B,OAAO,wBAAe,CACpB,GAAG;QACD,kBAAQ,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC;SACX,CAAC;QACF,kBAAQ,CAAC;YACP,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;KACH,CACF,CAAC;AACJ,CAAC;AAfD,sCAeC"}
|
|
@@ -11,4 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./api-meta-headers"), exports);
|
|
14
|
+
__exportStar(require("./api-pagination"), exports);
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC;AACnC,mDAAiC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrayUtil = void 0;
|
|
4
|
+
class ArrayUtil {
|
|
5
|
+
static paginate(array, pageNumber, pageSize) {
|
|
6
|
+
return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
|
|
7
|
+
}
|
|
8
|
+
static unique(array) {
|
|
9
|
+
return array.filter((v, i, a) => a.indexOf(v) === i);
|
|
10
|
+
}
|
|
11
|
+
static intersection(array1, array2) {
|
|
12
|
+
return array1.filter((value) => array2.includes(value));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ArrayUtil = ArrayUtil;
|
|
16
|
+
//# sourceMappingURL=array.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.util.js","sourceRoot":"","sources":["../../../src/util/array.util.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ;QAEzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF;AAXD,8BAWC"}
|
package/lib/src/util/index.d.ts
CHANGED
package/lib/src/util/index.js
CHANGED
|
@@ -11,5 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./string.util"), exports);
|
|
14
|
+
__exportStar(require("./array.util"), exports);
|
|
14
15
|
__exportStar(require("./locale.util"), exports);
|
|
16
|
+
__exportStar(require("./time.util"), exports);
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,gDAA8B;AAC9B,8CAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.util.js","sourceRoot":"","sources":["../../../src/util/string.util.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,MAAa,UAAU;IACrB,gBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"string.util.js","sourceRoot":"","sources":["../../../src/util/string.util.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,MAAa,UAAU;IACrB,gBAAuB,CAAC;IACjB,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,GAAW;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;YACnC,IACE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,UAAU,CACX,EACD;gBACA,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,GAAG;QAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,GAAG;QAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;CACF;AAvCD,gCAuCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Common code for Assistant applications",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"@types/jest": "^27.0.1",
|
|
48
48
|
"@types/js-yaml": "^3.12.5",
|
|
49
49
|
"@types/supertest": "^2.0.10",
|
|
50
|
+
"@types/uuid": "^8.3.1",
|
|
50
51
|
"husky": "^4.3.6",
|
|
51
52
|
"jest": "^27.0.6",
|
|
52
53
|
"nodemon": "^2.0.6",
|
|
@@ -5,6 +5,8 @@ import { AuthorizationAllowance } from "./authorization-allowance";
|
|
|
5
5
|
|
|
6
6
|
export class HttpAuthzGuardUtil {
|
|
7
7
|
private _token: any;
|
|
8
|
+
public readonly params: any;
|
|
9
|
+
public readonly query: any;
|
|
8
10
|
|
|
9
11
|
constructor(private readonly context: ExecutionContext) {
|
|
10
12
|
const request = context.switchToHttp().getRequest();
|
|
@@ -21,6 +23,8 @@ export class HttpAuthzGuardUtil {
|
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
this._token = decodedToken;
|
|
26
|
+
this.params = request.params;
|
|
27
|
+
this.query = request.query;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
public isAuthorized(...authzRequests: AuthorizationRequestInterface[]) {
|
|
@@ -55,6 +59,9 @@ export class HttpAuthzGuardUtil {
|
|
|
55
59
|
|
|
56
60
|
for (let i = 0; i < authzRequests.length; i++) {
|
|
57
61
|
const request = authzRequests[i];
|
|
62
|
+
if (!authorizationAllowances[i]) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
58
65
|
const allowance = authorizationAllowances[i];
|
|
59
66
|
if (!allowance.isRequestAllowed(request)) {
|
|
60
67
|
return false;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ApiQuery } from "@nestjs/swagger";
|
|
2
|
+
import { applyDecorators } from "@nestjs/common";
|
|
3
|
+
|
|
4
|
+
export function ApiPagination() {
|
|
5
|
+
return applyDecorators(
|
|
6
|
+
...[
|
|
7
|
+
ApiQuery({
|
|
8
|
+
name: "page",
|
|
9
|
+
required: true,
|
|
10
|
+
example: 1,
|
|
11
|
+
}),
|
|
12
|
+
ApiQuery({
|
|
13
|
+
name: "pageSize",
|
|
14
|
+
required: true,
|
|
15
|
+
example: 10,
|
|
16
|
+
}),
|
|
17
|
+
]
|
|
18
|
+
);
|
|
19
|
+
}
|
package/src/decorator/index.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class ArrayUtil {
|
|
2
|
+
static paginate(array, pageNumber, pageSize) {
|
|
3
|
+
// human-readable page numbers usually start with 1, so we reduce 1 in the first argument
|
|
4
|
+
return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
|
|
5
|
+
}
|
|
6
|
+
static unique(array) {
|
|
7
|
+
return array.filter((v, i, a) => a.indexOf(v) === i);
|
|
8
|
+
}
|
|
9
|
+
static intersection(array1, array2) {
|
|
10
|
+
return array1.filter((value) => array2.includes(value));
|
|
11
|
+
}
|
|
12
|
+
}
|
package/src/util/index.ts
CHANGED