@sasjs/utils 3.6.5 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pre-commit-config.yaml +24 -0
- package/auth/auth.js +3 -22
- package/auth/auth.js.map +1 -1
- package/logger/logger.d.ts +9 -2
- package/logger/logger.js +25 -39
- package/logger/logger.js.map +1 -1
- package/package.json +3 -6
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Hooks for the pre-commit framework - https://pre-commit.com
|
|
2
|
+
#
|
|
3
|
+
# The repo also ships native hooks in .git-hooks/: gitleaks on the staged
|
|
4
|
+
# content before the commit, and the Conventional Commits check on the message.
|
|
5
|
+
# `npm run setup` activates them by setting core.hooksPath - but .npmrc sets
|
|
6
|
+
# ignore-scripts=true, so no install step runs it, and a fresh clone commits
|
|
7
|
+
# unchecked until someone runs it by hand.
|
|
8
|
+
#
|
|
9
|
+
# This file is the standard route instead: install the framework once with
|
|
10
|
+
# `pre-commit install`, and both hooks run on every commit. gitleaks is pinned
|
|
11
|
+
# to an exact release tag, and the message hook calls the script the native
|
|
12
|
+
# hooks already use, so there is one implementation of the rules.
|
|
13
|
+
repos:
|
|
14
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
15
|
+
rev: v8.30.1
|
|
16
|
+
hooks:
|
|
17
|
+
- id: gitleaks
|
|
18
|
+
- repo: local
|
|
19
|
+
hooks:
|
|
20
|
+
- id: commit-msg
|
|
21
|
+
name: conventional commit
|
|
22
|
+
entry: .git-hooks/commit-msg
|
|
23
|
+
language: script
|
|
24
|
+
stages: [commit-msg]
|
package/auth/auth.js
CHANGED
|
@@ -1,26 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
3
|
exports.decodeToken = exports.hasTokenExpired = exports.isRefreshTokenExpiring = exports.isAccessTokenExpiring = void 0;
|
|
23
|
-
const jwt_decode_1 =
|
|
4
|
+
const jwt_decode_1 = require("jwt-decode");
|
|
24
5
|
/**
|
|
25
6
|
* Checks if the Access Token is expired or is expiring in 1 hour. A default Access Token
|
|
26
7
|
* lasts 12 hours. If the Access Token expires, the Refresh Token is used to fetch a new
|
|
@@ -68,7 +49,7 @@ exports.hasTokenExpired = hasTokenExpired;
|
|
|
68
49
|
function isTokenExpiring(token, timeToLiveSeconds) {
|
|
69
50
|
let payload;
|
|
70
51
|
try {
|
|
71
|
-
payload = (0, jwt_decode_1.
|
|
52
|
+
payload = (0, jwt_decode_1.jwtDecode)(token);
|
|
72
53
|
}
|
|
73
54
|
catch (err) {
|
|
74
55
|
// Only tolerate undecodable (opaque / non-JWT) tokens - anything else
|
|
@@ -92,7 +73,7 @@ function isTokenExpiring(token, timeToLiveSeconds) {
|
|
|
92
73
|
function decodeToken(token) {
|
|
93
74
|
let payload;
|
|
94
75
|
try {
|
|
95
|
-
payload = (0, jwt_decode_1.
|
|
76
|
+
payload = (0, jwt_decode_1.jwtDecode)(token);
|
|
96
77
|
}
|
|
97
78
|
catch (err) {
|
|
98
79
|
throw new Error('Invalid token supplied.');
|
package/auth/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAGzD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACnC,KAAc,EACd,iBAAiB,GAAG,IAAI;IAExB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;AAClD,CAAC;AARD,sDAQC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CACpC,KAAc,EACd,iBAAiB,GAAG,EAAE;IAEtB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;AAClD,CAAC;AARD,wDAQC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAClC,CAAC;AALD,0CAKC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,iBAAyB;IAC/D,IAAI,OAAyB,CAAA;IAC7B,IAAI;QACF,OAAO,GAAG,IAAA,sBAAS,EAAmB,KAAK,CAAC,CAAA;KAC7C;IAAC,OAAO,GAAG,EAAE;QACZ,sEAAsE;QACtE,uCAAuC;QACvC,IAAI,CAAC,CAAC,GAAG,YAAY,8BAAiB,CAAC;YAAE,MAAM,GAAG,CAAA;QAClD,sDAAsD;QACtD,sEAAsE;QACtE,wEAAwE;QACxE,0DAA0D;QAC1D,OAAO,KAAK,CAAA;KACb;IAED,gEAAgE;IAChE,uEAAuE;IACvE,qBAAqB;IACrB,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAA;IAE5D,OAAO,UAAU,IAAI,iBAAiB,CAAA;AACxC,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,IAAI,OAAqB,CAAA;IACzB,IAAI;QACF,OAAO,GAAG,IAAA,sBAAS,EAAC,KAAK,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;KAC3C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AATD,kCASC"}
|
package/logger/logger.d.ts
CHANGED
|
@@ -11,9 +11,16 @@ export declare class Logger {
|
|
|
11
11
|
warn: (message: string, ...args: any) => void;
|
|
12
12
|
error: (message: string, ...args: any) => void;
|
|
13
13
|
log: (message: string, ...args: any) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Prints rows as aligned columns, separated by two spaces. When `head` is
|
|
16
|
+
* given it is printed first, underlined with dashes.
|
|
17
|
+
*
|
|
18
|
+
* Cells may carry colour codes, which occupy no screen columns, so column
|
|
19
|
+
* widths are measured on the text with the codes removed.
|
|
20
|
+
*/
|
|
14
21
|
table: (data: string[][], options?: {
|
|
15
|
-
chars?: {} | undefined;
|
|
16
22
|
head?: string[] | undefined;
|
|
17
|
-
} | undefined
|
|
23
|
+
} | undefined) => void;
|
|
24
|
+
private visibleLength;
|
|
18
25
|
private filterArgs;
|
|
19
26
|
}
|
package/logger/logger.js
CHANGED
|
@@ -8,8 +8,6 @@ const consola_1 = require("consola");
|
|
|
8
8
|
const isLowerThanOrEqualTo_1 = require("./isLowerThanOrEqualTo");
|
|
9
9
|
const isNullOrUndefined_1 = require("./isNullOrUndefined");
|
|
10
10
|
const logLevel_1 = require("./logLevel");
|
|
11
|
-
const formatter_1 = require("../formatter");
|
|
12
|
-
const cli_table_1 = __importDefault(require("cli-table"));
|
|
13
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
14
12
|
class Logger {
|
|
15
13
|
constructor(logLevel) {
|
|
@@ -47,45 +45,30 @@ class Logger {
|
|
|
47
45
|
this.log = (message, ...args) => {
|
|
48
46
|
consola_1.consola.log(message, ...this.filterArgs(args));
|
|
49
47
|
};
|
|
50
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Prints rows as aligned columns, separated by two spaces. When `head` is
|
|
50
|
+
* given it is printed first, underlined with dashes.
|
|
51
|
+
*
|
|
52
|
+
* Cells may carry colour codes, which occupy no screen columns, so column
|
|
53
|
+
* widths are measured on the text with the codes removed.
|
|
54
|
+
*/
|
|
55
|
+
this.table = (data, options) => {
|
|
51
56
|
var _a;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'mid-mid': '┼',
|
|
66
|
-
right: '║',
|
|
67
|
-
'right-mid': '╢',
|
|
68
|
-
middle: '│'
|
|
69
|
-
},
|
|
70
|
-
head: []
|
|
71
|
-
};
|
|
72
|
-
let table;
|
|
73
|
-
if (options && Object.keys(options).length) {
|
|
74
|
-
table = new cli_table_1.default({
|
|
75
|
-
chars: options.chars || defaultOptions.chars,
|
|
76
|
-
head: ((_a = options.head) === null || _a === void 0 ? void 0 : _a.map((header) => chalk_1.default.white.bold(header))) ||
|
|
77
|
-
defaultOptions.head
|
|
78
|
-
});
|
|
57
|
+
const head = (_a = options === null || options === void 0 ? void 0 : options.head) === null || _a === void 0 ? void 0 : _a.map((header) => chalk_1.default.white.bold(header));
|
|
58
|
+
const rows = (head === null || head === void 0 ? void 0 : head.length) ? [head, ...data] : data;
|
|
59
|
+
const widths = [];
|
|
60
|
+
rows.forEach((row) => row.forEach((cell, column) => {
|
|
61
|
+
widths[column] = Math.max(widths[column] || 0, this.visibleLength(cell));
|
|
62
|
+
}));
|
|
63
|
+
const lines = rows.map((row) => row
|
|
64
|
+
.map((cell, column) => cell +
|
|
65
|
+
' '.repeat(Math.max(0, widths[column] - this.visibleLength(cell))))
|
|
66
|
+
.join(' ')
|
|
67
|
+
.trimEnd());
|
|
68
|
+
if (head === null || head === void 0 ? void 0 : head.length) {
|
|
69
|
+
lines.splice(1, 0, widths.map((width) => '-'.repeat(width)).join(' '));
|
|
79
70
|
}
|
|
80
|
-
|
|
81
|
-
table = new cli_table_1.default({
|
|
82
|
-
chars: defaultOptions.chars
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
data.forEach((item) => table.push(item));
|
|
86
|
-
this.log((disableStyling
|
|
87
|
-
? (0, formatter_1.sanitizeSpecialChars)(table.toString())
|
|
88
|
-
: table.toString()) + '\n');
|
|
71
|
+
this.log(lines.join('\n') + '\n');
|
|
89
72
|
};
|
|
90
73
|
if (!(0, isNullOrUndefined_1.isNullOrUndefined)(logLevel) && logLevel in logLevel_1.LogLevel) {
|
|
91
74
|
this._logLevel = logLevel;
|
|
@@ -97,6 +80,9 @@ class Logger {
|
|
|
97
80
|
set logLevel(value) {
|
|
98
81
|
this._logLevel = value;
|
|
99
82
|
}
|
|
83
|
+
visibleLength(value) {
|
|
84
|
+
return String(value).replace(/\u001b\[[0-9;]*m/g, '').length;
|
|
85
|
+
}
|
|
100
86
|
filterArgs(args) {
|
|
101
87
|
return args.filter((arg) => (arg ? arg : false));
|
|
102
88
|
}
|
package/logger/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAiC;AACjC,iEAA6D;AAC7D,2DAAuD;AACvD,yCAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -56,28 +56,25 @@
|
|
|
56
56
|
"@sasjs/core": "5.3.0",
|
|
57
57
|
"@semantic-release/exec": "6.0.3",
|
|
58
58
|
"@semantic-release/git": "10.0.1",
|
|
59
|
-
"@types/cli-table": "0.3.4",
|
|
60
59
|
"@types/jest": "29.4.0",
|
|
61
60
|
"babel-jest": "29.4.3",
|
|
62
61
|
"jest": "29.4.3",
|
|
63
62
|
"jest-extended": "3.2.4",
|
|
64
63
|
"semantic-release": "25.0.9",
|
|
65
64
|
"ts-jest": "29.4.14",
|
|
66
|
-
"ts-loader": "9.6.2",
|
|
67
65
|
"ts-node": "10.9.2",
|
|
68
66
|
"typescript": "4.5.4",
|
|
69
67
|
"@nogoo9/gitleaks": "8.30.1-post.2"
|
|
70
68
|
},
|
|
71
69
|
"dependencies": {
|
|
72
|
-
"@fast-csv/format": "
|
|
70
|
+
"@fast-csv/format": "5.0.7",
|
|
73
71
|
"@types/fs-extra": "11.0.4",
|
|
74
72
|
"@types/prompts": "2.4.9",
|
|
75
73
|
"chalk": "4.1.1",
|
|
76
|
-
"cli-table": "0.3.11",
|
|
77
74
|
"consola": "3.4.2",
|
|
78
75
|
"fs-extra": "11.4.1",
|
|
79
|
-
"jwt-decode": "
|
|
76
|
+
"jwt-decode": "4.0.0",
|
|
80
77
|
"prompts": "2.4.2"
|
|
81
78
|
},
|
|
82
|
-
"version": "3.
|
|
79
|
+
"version": "3.7.0"
|
|
83
80
|
}
|