@sasjs/lint 1.14.1 → 2.0.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/README.md +127 -87
- package/lint/shared.js +2 -2
- package/lint/shared.js.map +1 -1
- package/package.json +1 -1
- package/rules/file/hasDoxygenHeader.js +4 -3
- package/rules/file/hasDoxygenHeader.js.map +1 -1
- package/rules/file/hasMacroNameInMend.js +5 -4
- package/rules/file/hasMacroNameInMend.js.map +1 -1
- package/rules/file/hasMacroParentheses.js +3 -2
- package/rules/file/hasMacroParentheses.js.map +1 -1
- package/rules/file/lineEndings.js +3 -2
- package/rules/file/lineEndings.js.map +1 -1
- package/rules/file/noNestedMacros.js +2 -1
- package/rules/file/noNestedMacros.js.map +1 -1
- package/rules/file/strictMacroDefinition.js +8 -6
- package/rules/file/strictMacroDefinition.js.map +1 -1
- package/rules/line/indentationMultiple.js +2 -1
- package/rules/line/indentationMultiple.js.map +1 -1
- package/rules/line/index.d.ts +1 -1
- package/rules/line/index.js +3 -3
- package/rules/line/index.js.map +1 -1
- package/rules/line/maxLineLength.js +2 -1
- package/rules/line/maxLineLength.js.map +1 -1
- package/rules/line/noEncodedPasswords.js +3 -2
- package/rules/line/noEncodedPasswords.js.map +1 -1
- package/rules/line/{noTabIndentation.d.ts → noTabs.d.ts} +1 -1
- package/rules/line/noTabs.js +34 -0
- package/rules/line/noTabs.js.map +1 -0
- package/rules/line/noTrailingSpaces.js +3 -2
- package/rules/line/noTrailingSpaces.js.map +1 -1
- package/rules/path/lowerCaseFileNames.js +3 -2
- package/rules/path/lowerCaseFileNames.js.map +1 -1
- package/rules/path/noSpacesInFileNames.js +3 -2
- package/rules/path/noSpacesInFileNames.js.map +1 -1
- package/sasjslint-schema.json +118 -6
- package/types/LintConfig.d.ts +4 -0
- package/types/LintConfig.js +50 -2
- package/types/LintConfig.js.map +1 -1
- package/types/LintRule.d.ts +1 -1
- package/utils/getIndicesOf.d.ts +1 -0
- package/utils/getIndicesOf.js +22 -0
- package/utils/getIndicesOf.js.map +1 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/index.js.map +1 -1
- package/rules/line/noTabIndentation.js +0 -32
- package/rules/line/noTabIndentation.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strictMacroDefinition.js","sourceRoot":"","sources":["../../../src/rules/file/strictMacroDefinition.ts"],"names":[],"mappings":";;;AAAA,qCAAqE;AAErE,yDAAuD;AACvD,uDAAqD;AAErD,IAAM,IAAI,GAAG,uBAAuB,CAAA;AACpC,IAAM,WAAW,GAAG,oDAAoD,CAAA;AACxE,IAAM,OAAO,GAAG,mCAAmC,CAAA;AAEnD,IAAM,YAAY,GAAG;IACnB,KAAK;IACL,KAAK;IACL,cAAc;IACd,aAAa;IACb,eAAe;IACf,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;CACR,CAAA;AAED,IAAM,aAAa,GAAG,UACpB,OAAe,EACf,KAAY,EACZ,WAAyB;
|
|
1
|
+
{"version":3,"file":"strictMacroDefinition.js","sourceRoot":"","sources":["../../../src/rules/file/strictMacroDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ var message = 'Line has incorrect indentation';
|
|
|
9
9
|
var test = function (value, lineNumber, config) {
|
|
10
10
|
if (!value.startsWith(' '))
|
|
11
11
|
return [];
|
|
12
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
|
|
12
13
|
var indentationMultiple = isNaN(config === null || config === void 0 ? void 0 : config.indentationMultiple)
|
|
13
14
|
? 2
|
|
14
15
|
: config.indentationMultiple;
|
|
@@ -23,7 +24,7 @@ var test = function (value, lineNumber, config) {
|
|
|
23
24
|
lineNumber: lineNumber,
|
|
24
25
|
startColumnNumber: 1,
|
|
25
26
|
endColumnNumber: 1,
|
|
26
|
-
severity:
|
|
27
|
+
severity: severity
|
|
27
28
|
}
|
|
28
29
|
];
|
|
29
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indentationMultiple.js","sourceRoot":"","sources":["../../../src/rules/line/indentationMultiple.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,IAAM,WAAW,GAAG,4DAA4D,CAAA;AAChF,IAAM,OAAO,GAAG,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"indentationMultiple.js","sourceRoot":"","sources":["../../../src/rules/line/indentationMultiple.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,IAAM,WAAW,GAAG,4DAA4D,CAAA;AAChF,IAAM,OAAO,GAAG,gCAAgC,CAAA;AAEhD,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB;IAClE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAErC,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,IAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAA6B,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAO,CAAC,mBAAmB,CAAA;IAE/B,IAAI,mBAAmB,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACxC,IAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3C,IAAI,cAAc,GAAG,mBAAoB,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1D,OAAO;QACL;YACE,OAAO,EAAK,OAAO,WAAM,cAAc,UACrC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACzC;YACF,UAAU,YAAA;YACV,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,QAAQ,UAAA;SACT;KACF,CAAA;AACH,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
package/rules/line/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { indentationMultiple } from './indentationMultiple';
|
|
2
2
|
export { maxLineLength } from './maxLineLength';
|
|
3
3
|
export { noEncodedPasswords } from './noEncodedPasswords';
|
|
4
|
-
export {
|
|
4
|
+
export { noTabs } from './noTabs';
|
|
5
5
|
export { noTrailingSpaces } from './noTrailingSpaces';
|
package/rules/line/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.noTrailingSpaces = exports.
|
|
3
|
+
exports.noTrailingSpaces = exports.noTabs = exports.noEncodedPasswords = exports.maxLineLength = exports.indentationMultiple = void 0;
|
|
4
4
|
var indentationMultiple_1 = require("./indentationMultiple");
|
|
5
5
|
Object.defineProperty(exports, "indentationMultiple", { enumerable: true, get: function () { return indentationMultiple_1.indentationMultiple; } });
|
|
6
6
|
var maxLineLength_1 = require("./maxLineLength");
|
|
7
7
|
Object.defineProperty(exports, "maxLineLength", { enumerable: true, get: function () { return maxLineLength_1.maxLineLength; } });
|
|
8
8
|
var noEncodedPasswords_1 = require("./noEncodedPasswords");
|
|
9
9
|
Object.defineProperty(exports, "noEncodedPasswords", { enumerable: true, get: function () { return noEncodedPasswords_1.noEncodedPasswords; } });
|
|
10
|
-
var
|
|
11
|
-
Object.defineProperty(exports, "
|
|
10
|
+
var noTabs_1 = require("./noTabs");
|
|
11
|
+
Object.defineProperty(exports, "noTabs", { enumerable: true, get: function () { return noTabs_1.noTabs; } });
|
|
12
12
|
var noTrailingSpaces_1 = require("./noTrailingSpaces");
|
|
13
13
|
Object.defineProperty(exports, "noTrailingSpaces", { enumerable: true, get: function () { return noTrailingSpaces_1.noTrailingSpaces; } });
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/rules/line/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/line/index.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/line/index.ts"],"names":[],"mappings":";;;AAAA,6DAA2D;AAAlD,0HAAA,mBAAmB,OAAA;AAC5B,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,uDAAqD;AAA5C,oHAAA,gBAAgB,OAAA"}
|
|
@@ -7,6 +7,7 @@ var name = 'maxLineLength';
|
|
|
7
7
|
var description = 'Restrict lines to the specified length.';
|
|
8
8
|
var message = 'Line exceeds maximum length';
|
|
9
9
|
var test = function (value, lineNumber, config) {
|
|
10
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
|
|
10
11
|
var maxLineLength = (config === null || config === void 0 ? void 0 : config.maxLineLength) || 80;
|
|
11
12
|
if (value.length <= maxLineLength)
|
|
12
13
|
return [];
|
|
@@ -16,7 +17,7 @@ var test = function (value, lineNumber, config) {
|
|
|
16
17
|
lineNumber: lineNumber,
|
|
17
18
|
startColumnNumber: 1,
|
|
18
19
|
endColumnNumber: 1,
|
|
19
|
-
severity:
|
|
20
|
+
severity: severity
|
|
20
21
|
}
|
|
21
22
|
];
|
|
22
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maxLineLength.js","sourceRoot":"","sources":["../../../src/rules/line/maxLineLength.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,eAAe,CAAA;AAC5B,IAAM,WAAW,GAAG,yCAAyC,CAAA;AAC7D,IAAM,OAAO,GAAG,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"maxLineLength.js","sourceRoot":"","sources":["../../../src/rules/line/maxLineLength.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,eAAe,CAAA;AAC5B,IAAM,WAAW,GAAG,yCAAyC,CAAA;AAC7D,IAAM,OAAO,GAAG,6BAA6B,CAAA;AAE7C,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB;IAClE,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,IAAM,aAAa,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,KAAI,EAAE,CAAA;IACjD,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa;QAAE,OAAO,EAAE,CAAA;IAC5C,OAAO;QACL;YACE,OAAO,EAAK,OAAO,aAAO,KAAK,CAAC,MAAM,GAAG,aAAa,iBAAa;YACnE,UAAU,YAAA;YACV,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,QAAQ,UAAA;SACT;KACF,CAAA;AACH,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,aAAa,GAAiB;IACzC,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
|
@@ -6,7 +6,8 @@ var Severity_1 = require("../../types/Severity");
|
|
|
6
6
|
var name = 'noEncodedPasswords';
|
|
7
7
|
var description = 'Disallow encoded passwords in SAS code.';
|
|
8
8
|
var message = 'Line contains encoded password';
|
|
9
|
-
var test = function (value, lineNumber) {
|
|
9
|
+
var test = function (value, lineNumber, config) {
|
|
10
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Error;
|
|
10
11
|
var regex = new RegExp(/{sas(\d{2,4}|enc)}[^;"'\s]*/, 'gi');
|
|
11
12
|
var matches = value.match(regex);
|
|
12
13
|
if (!matches || !matches.length)
|
|
@@ -16,7 +17,7 @@ var test = function (value, lineNumber) {
|
|
|
16
17
|
lineNumber: lineNumber,
|
|
17
18
|
startColumnNumber: value.indexOf(match) + 1,
|
|
18
19
|
endColumnNumber: value.indexOf(match) + match.length + 1,
|
|
19
|
-
severity:
|
|
20
|
+
severity: severity
|
|
20
21
|
}); });
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noEncodedPasswords.js","sourceRoot":"","sources":["../../../src/rules/line/noEncodedPasswords.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"noEncodedPasswords.js","sourceRoot":"","sources":["../../../src/rules/line/noEncodedPasswords.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,oBAAoB,CAAA;AACjC,IAAM,WAAW,GAAG,yCAAyC,CAAA;AAC7D,IAAM,OAAO,GAAG,gCAAgC,CAAA;AAEhD,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB;IAClE,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,KAAK,CAAA;IAC9D,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;IAC7D,IAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC;QAC7B,OAAO,SAAA;QACP,UAAU,YAAA;QACV,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QACxD,QAAQ,UAAA;KACT,CAAC,EAN4B,CAM5B,CAAC,CAAA;AACL,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noTabs = void 0;
|
|
4
|
+
var LintRuleType_1 = require("../../types/LintRuleType");
|
|
5
|
+
var Severity_1 = require("../../types/Severity");
|
|
6
|
+
var utils_1 = require("../../utils");
|
|
7
|
+
var name = 'noTabs';
|
|
8
|
+
var alias = 'noTabIndentation';
|
|
9
|
+
var description = 'Disallow indenting with tabs.';
|
|
10
|
+
var message = 'Line contains tab indentation';
|
|
11
|
+
var test = function (value, lineNumber, config) {
|
|
12
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) ||
|
|
13
|
+
(config === null || config === void 0 ? void 0 : config.severityLevel[alias]) ||
|
|
14
|
+
Severity_1.Severity.Warning;
|
|
15
|
+
var indices = utils_1.getIndicesOf('\t', value);
|
|
16
|
+
return indices.map(function (index) { return ({
|
|
17
|
+
message: message,
|
|
18
|
+
lineNumber: lineNumber,
|
|
19
|
+
startColumnNumber: index + 1,
|
|
20
|
+
endColumnNumber: index + 2,
|
|
21
|
+
severity: severity
|
|
22
|
+
}); });
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Lint rule that checks if a given line of text is indented with a tab.
|
|
26
|
+
*/
|
|
27
|
+
exports.noTabs = {
|
|
28
|
+
type: LintRuleType_1.LintRuleType.Line,
|
|
29
|
+
name: name,
|
|
30
|
+
description: description,
|
|
31
|
+
message: message,
|
|
32
|
+
test: test
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=noTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noTabs.js","sourceRoot":"","sources":["../../../src/rules/line/noTabs.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAC/C,qCAA0C;AAE1C,IAAM,IAAI,GAAG,QAAQ,CAAA;AACrB,IAAM,KAAK,GAAG,kBAAkB,CAAA;AAChC,IAAM,WAAW,GAAG,+BAA+B,CAAA;AACnD,IAAM,OAAO,GAAG,+BAA+B,CAAA;AAE/C,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB;IAClE,IAAM,QAAQ,GACZ,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC;SAC3B,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,KAAK,CAAC,CAAA;QAC5B,mBAAQ,CAAC,OAAO,CAAA;IAElB,IAAM,OAAO,GAAG,oBAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAEzC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC;QAC7B,OAAO,SAAA;QACP,UAAU,YAAA;QACV,iBAAiB,EAAE,KAAK,GAAG,CAAC;QAC5B,eAAe,EAAE,KAAK,GAAG,CAAC;QAC1B,QAAQ,UAAA;KACT,CAAC,EAN4B,CAM5B,CAAC,CAAA;AACL,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,MAAM,GAAiB;IAClC,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
|
@@ -6,7 +6,8 @@ var Severity_1 = require("../../types/Severity");
|
|
|
6
6
|
var name = 'noTrailingSpaces';
|
|
7
7
|
var description = 'Disallow trailing spaces on lines.';
|
|
8
8
|
var message = 'Line contains trailing spaces';
|
|
9
|
-
var test = function (value, lineNumber) {
|
|
9
|
+
var test = function (value, lineNumber, config) {
|
|
10
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
|
|
10
11
|
return value.trimEnd() === value
|
|
11
12
|
? []
|
|
12
13
|
: [
|
|
@@ -15,7 +16,7 @@ var test = function (value, lineNumber) {
|
|
|
15
16
|
lineNumber: lineNumber,
|
|
16
17
|
startColumnNumber: value.trimEnd().length + 1,
|
|
17
18
|
endColumnNumber: value.length,
|
|
18
|
-
severity:
|
|
19
|
+
severity: severity
|
|
19
20
|
}
|
|
20
21
|
];
|
|
21
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noTrailingSpaces.js","sourceRoot":"","sources":["../../../src/rules/line/noTrailingSpaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"noTrailingSpaces.js","sourceRoot":"","sources":["../../../src/rules/line/noTrailingSpaces.ts"],"names":[],"mappings":";;;AAEA,yDAAuD;AACvD,iDAA+C;AAE/C,IAAM,IAAI,GAAG,kBAAkB,CAAA;AAC/B,IAAM,WAAW,GAAG,oCAAoC,CAAA;AACxD,IAAM,OAAO,GAAG,+BAA+B,CAAA;AAE/C,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB;IAClE,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAEhE,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK;QAC9B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE;gBACE,OAAO,SAAA;gBACP,UAAU,YAAA;gBACV,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC;gBAC7C,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,QAAQ,UAAA;aACT;SACF,CAAA;AACP,CAAC,CAAA;AAED,IAAM,GAAG,GAAG,UAAC,KAAa,IAAK,OAAA,KAAK,CAAC,OAAO,EAAE,EAAf,CAAe,CAAA;AAE9C;;GAEG;AACU,QAAA,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;IACJ,GAAG,KAAA;CACJ,CAAA"}
|
|
@@ -10,7 +10,8 @@ var path_1 = __importDefault(require("path"));
|
|
|
10
10
|
var name = 'lowerCaseFileNames';
|
|
11
11
|
var description = 'Enforce the use of lower case file names.';
|
|
12
12
|
var message = 'File name contains uppercase characters';
|
|
13
|
-
var test = function (value) {
|
|
13
|
+
var test = function (value, config) {
|
|
14
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
|
|
14
15
|
var fileName = path_1.default.basename(value);
|
|
15
16
|
if (fileName.toLocaleLowerCase() === fileName)
|
|
16
17
|
return [];
|
|
@@ -20,7 +21,7 @@ var test = function (value) {
|
|
|
20
21
|
lineNumber: 1,
|
|
21
22
|
startColumnNumber: 1,
|
|
22
23
|
endColumnNumber: 1,
|
|
23
|
-
severity:
|
|
24
|
+
severity: severity
|
|
24
25
|
}
|
|
25
26
|
];
|
|
26
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowerCaseFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/lowerCaseFileNames.ts"],"names":[],"mappings":";;;;;;AACA,yDAAuD;AACvD,iDAA+C;AAC/C,8CAAuB;
|
|
1
|
+
{"version":3,"file":"lowerCaseFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/lowerCaseFileNames.ts"],"names":[],"mappings":";;;;;;AACA,yDAAuD;AACvD,iDAA+C;AAC/C,8CAAuB;AAGvB,IAAM,IAAI,GAAG,oBAAoB,CAAA;AACjC,IAAM,WAAW,GAAG,2CAA2C,CAAA;AAC/D,IAAM,OAAO,GAAG,yCAAyC,CAAA;AAEzD,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,MAAmB;IAC9C,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,IAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErC,IAAI,QAAQ,CAAC,iBAAiB,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAExD,OAAO;QACL;YACE,OAAO,SAAA;YACP,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,QAAQ,UAAA;SACT;KACF,CAAA;AACH,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
|
@@ -10,7 +10,8 @@ var path_1 = __importDefault(require("path"));
|
|
|
10
10
|
var name = 'noSpacesInFileNames';
|
|
11
11
|
var description = 'Enforce the absence of spaces within file names.';
|
|
12
12
|
var message = 'File name contains spaces';
|
|
13
|
-
var test = function (value) {
|
|
13
|
+
var test = function (value, config) {
|
|
14
|
+
var severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning;
|
|
14
15
|
var fileName = path_1.default.basename(value);
|
|
15
16
|
if (fileName.includes(' ')) {
|
|
16
17
|
return [
|
|
@@ -19,7 +20,7 @@ var test = function (value) {
|
|
|
19
20
|
lineNumber: 1,
|
|
20
21
|
startColumnNumber: 1,
|
|
21
22
|
endColumnNumber: 1,
|
|
22
|
-
severity:
|
|
23
|
+
severity: severity
|
|
23
24
|
}
|
|
24
25
|
];
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noSpacesInFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/noSpacesInFileNames.ts"],"names":[],"mappings":";;;;;;AACA,yDAAuD;AACvD,iDAA+C;AAC/C,8CAAuB;
|
|
1
|
+
{"version":3,"file":"noSpacesInFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/noSpacesInFileNames.ts"],"names":[],"mappings":";;;;;;AACA,yDAAuD;AACvD,iDAA+C;AAC/C,8CAAuB;AAGvB,IAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,IAAM,WAAW,GAAG,kDAAkD,CAAA;AACtE,IAAM,OAAO,GAAG,2BAA2B,CAAA;AAE3C,IAAM,IAAI,GAAG,UAAC,KAAa,EAAE,MAAmB;IAC9C,IAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,IAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC1B,OAAO;YACL;gBACE,OAAO,SAAA;gBACP,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,eAAe,EAAE,CAAC;gBAClB,QAAQ,UAAA;aACT;SACF,CAAA;KACF;IACD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI,MAAA;IACJ,WAAW,aAAA;IACX,OAAO,SAAA;IACP,IAAI,MAAA;CACL,CAAA"}
|
package/sasjslint-schema.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"maxLineLength": 80,
|
|
16
16
|
"noNestedMacros": true,
|
|
17
17
|
"noSpacesInFileNames": true,
|
|
18
|
-
"
|
|
18
|
+
"noTabs": true,
|
|
19
19
|
"noTrailingSpaces": true,
|
|
20
20
|
"lineEndings": "lf",
|
|
21
21
|
"strictMacroDefinition": true,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"noSpacesInFileNames": true,
|
|
30
30
|
"lowerCaseFileNames": true,
|
|
31
31
|
"maxLineLength": 80,
|
|
32
|
-
"
|
|
32
|
+
"noTabs": true,
|
|
33
33
|
"indentationMultiple": 4,
|
|
34
34
|
"hasMacroNameInMend": true,
|
|
35
35
|
"noNestedMacros": true,
|
|
@@ -120,11 +120,11 @@
|
|
|
120
120
|
"default": true,
|
|
121
121
|
"examples": [true, false]
|
|
122
122
|
},
|
|
123
|
-
"
|
|
124
|
-
"$id": "#/properties/
|
|
123
|
+
"noTabs": {
|
|
124
|
+
"$id": "#/properties/noTabs",
|
|
125
125
|
"type": "boolean",
|
|
126
|
-
"title": "
|
|
127
|
-
"description": "Enforces no indentation using tabs. Shows a warning when a line
|
|
126
|
+
"title": "noTabs",
|
|
127
|
+
"description": "Enforces no indentation using tabs. Shows a warning when a line contains a tab.",
|
|
128
128
|
"default": true,
|
|
129
129
|
"examples": [true, false]
|
|
130
130
|
},
|
|
@@ -159,6 +159,118 @@
|
|
|
159
159
|
"description": "An array of paths or path patterns to ignore when linting. Any files or matching patterns in the .gitignore file will also be ignored.",
|
|
160
160
|
"default": ["sasjsbuild/", "sasjsresults/"],
|
|
161
161
|
"examples": ["sasjs/tests", "tmp/scratch.sas"]
|
|
162
|
+
},
|
|
163
|
+
"severityLevel": {
|
|
164
|
+
"$id": "#/properties/severityLevel",
|
|
165
|
+
"type": "object",
|
|
166
|
+
"title": "severityLevel",
|
|
167
|
+
"description": "An object which specifies the severity level of each rule.",
|
|
168
|
+
"default": {},
|
|
169
|
+
"examples": [
|
|
170
|
+
{
|
|
171
|
+
"hasDoxygenHeader": "warn",
|
|
172
|
+
"maxLineLength": "warn",
|
|
173
|
+
"noTrailingSpaces": "error"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"hasDoxygenHeader": "warn",
|
|
177
|
+
"maxLineLength": "error",
|
|
178
|
+
"noTrailingSpaces": "error"
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
"properties": {
|
|
182
|
+
"noEncodedPasswords": {
|
|
183
|
+
"$id": "#/properties/severityLevel/noEncodedPasswords",
|
|
184
|
+
"title": "noEncodedPasswords",
|
|
185
|
+
"type": "string",
|
|
186
|
+
"enum": ["error", "warn"],
|
|
187
|
+
"default": "error"
|
|
188
|
+
},
|
|
189
|
+
"hasDoxygenHeader": {
|
|
190
|
+
"$id": "#/properties/severityLevel/hasDoxygenHeader",
|
|
191
|
+
"title": "hasDoxygenHeader",
|
|
192
|
+
"type": "string",
|
|
193
|
+
"enum": ["error", "warn"],
|
|
194
|
+
"default": "warn"
|
|
195
|
+
},
|
|
196
|
+
"hasMacroNameInMend": {
|
|
197
|
+
"$id": "#/properties/severityLevel/hasMacroNameInMend",
|
|
198
|
+
"title": "hasMacroNameInMend",
|
|
199
|
+
"type": "string",
|
|
200
|
+
"enum": ["error", "warn"],
|
|
201
|
+
"default": "warn"
|
|
202
|
+
},
|
|
203
|
+
"hasMacroParentheses": {
|
|
204
|
+
"$id": "#/properties/severityLevel/hasMacroParentheses",
|
|
205
|
+
"title": "hasMacroParentheses",
|
|
206
|
+
"type": "string",
|
|
207
|
+
"enum": ["error", "warn"],
|
|
208
|
+
"default": "warn"
|
|
209
|
+
},
|
|
210
|
+
"indentationMultiple": {
|
|
211
|
+
"$id": "#/properties/severityLevel/indentationMultiple",
|
|
212
|
+
"title": "indentationMultiple",
|
|
213
|
+
"type": "string",
|
|
214
|
+
"enum": ["error", "warn"],
|
|
215
|
+
"default": "warn"
|
|
216
|
+
},
|
|
217
|
+
"lowerCaseFileNames": {
|
|
218
|
+
"$id": "#/properties/severityLevel/lowerCaseFileNames",
|
|
219
|
+
"title": "lowerCaseFileNames",
|
|
220
|
+
"type": "string",
|
|
221
|
+
"enum": ["error", "warn"],
|
|
222
|
+
"default": "warn"
|
|
223
|
+
},
|
|
224
|
+
"maxLineLength": {
|
|
225
|
+
"$id": "#/properties/severityLevel/maxLineLength",
|
|
226
|
+
"title": "maxLineLength",
|
|
227
|
+
"type": "string",
|
|
228
|
+
"enum": ["error", "warn"],
|
|
229
|
+
"default": "warn"
|
|
230
|
+
},
|
|
231
|
+
"noNestedMacros": {
|
|
232
|
+
"$id": "#/properties/severityLevel/noNestedMacros",
|
|
233
|
+
"title": "noNestedMacros",
|
|
234
|
+
"type": "string",
|
|
235
|
+
"enum": ["error", "warn"],
|
|
236
|
+
"default": "warn"
|
|
237
|
+
},
|
|
238
|
+
"noSpacesInFileNames": {
|
|
239
|
+
"$id": "#/properties/severityLevel/noSpacesInFileNames",
|
|
240
|
+
"title": "noSpacesInFileNames",
|
|
241
|
+
"type": "string",
|
|
242
|
+
"enum": ["error", "warn"],
|
|
243
|
+
"default": "warn"
|
|
244
|
+
},
|
|
245
|
+
"noTabs": {
|
|
246
|
+
"$id": "#/properties/severityLevel/noTabs",
|
|
247
|
+
"title": "noTabs",
|
|
248
|
+
"type": "string",
|
|
249
|
+
"enum": ["error", "warn"],
|
|
250
|
+
"default": "warn"
|
|
251
|
+
},
|
|
252
|
+
"noTrailingSpaces": {
|
|
253
|
+
"$id": "#/properties/severityLevel/noTrailingSpaces",
|
|
254
|
+
"title": "noTrailingSpaces",
|
|
255
|
+
"type": "string",
|
|
256
|
+
"enum": ["error", "warn"],
|
|
257
|
+
"default": "warn"
|
|
258
|
+
},
|
|
259
|
+
"lineEndings": {
|
|
260
|
+
"$id": "#/properties/severityLevel/lineEndings",
|
|
261
|
+
"title": "lineEndings",
|
|
262
|
+
"type": "string",
|
|
263
|
+
"enum": ["error", "warn"],
|
|
264
|
+
"default": "warn"
|
|
265
|
+
},
|
|
266
|
+
"strictMacroDefinition": {
|
|
267
|
+
"$id": "#/properties/severityLevel/strictMacroDefinition",
|
|
268
|
+
"title": "strictMacroDefinition",
|
|
269
|
+
"type": "string",
|
|
270
|
+
"enum": ["error", "warn"],
|
|
271
|
+
"default": "warn"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
162
274
|
}
|
|
163
275
|
}
|
|
164
276
|
}
|
package/types/LintConfig.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LineEndings } from './LineEndings';
|
|
2
2
|
import { FileLintRule, LineLintRule, PathLintRule } from './LintRule';
|
|
3
|
+
import { Severity } from './Severity';
|
|
3
4
|
/**
|
|
4
5
|
* LintConfig is the logical representation of the .sasjslint file.
|
|
5
6
|
* It exposes two sets of rules - one to be run against each line in a file,
|
|
@@ -16,5 +17,8 @@ export declare class LintConfig {
|
|
|
16
17
|
readonly indentationMultiple: number;
|
|
17
18
|
readonly lineEndings: LineEndings;
|
|
18
19
|
readonly defaultHeader: string;
|
|
20
|
+
readonly severityLevel: {
|
|
21
|
+
[key: string]: Severity;
|
|
22
|
+
};
|
|
19
23
|
constructor(json?: any);
|
|
20
24
|
}
|
package/types/LintConfig.js
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
2
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
30
|
exports.LintConfig = void 0;
|
|
4
31
|
var file_1 = require("../rules/file");
|
|
@@ -6,6 +33,7 @@ var line_1 = require("../rules/line");
|
|
|
6
33
|
var path_1 = require("../rules/path");
|
|
7
34
|
var LineEndings_1 = require("./LineEndings");
|
|
8
35
|
var utils_1 = require("../utils");
|
|
36
|
+
var Severity_1 = require("./Severity");
|
|
9
37
|
/**
|
|
10
38
|
* LintConfig is the logical representation of the .sasjslint file.
|
|
11
39
|
* It exposes two sets of rules - one to be run against each line in a file,
|
|
@@ -15,6 +43,7 @@ var utils_1 = require("../utils");
|
|
|
15
43
|
*/
|
|
16
44
|
var LintConfig = /** @class */ (function () {
|
|
17
45
|
function LintConfig(json) {
|
|
46
|
+
var e_1, _a;
|
|
18
47
|
var _this = this;
|
|
19
48
|
this.ignoreList = [];
|
|
20
49
|
this.lineLintRules = [];
|
|
@@ -24,6 +53,7 @@ var LintConfig = /** @class */ (function () {
|
|
|
24
53
|
this.indentationMultiple = 2;
|
|
25
54
|
this.lineEndings = LineEndings_1.LineEndings.LF;
|
|
26
55
|
this.defaultHeader = utils_1.getDefaultHeader();
|
|
56
|
+
this.severityLevel = {};
|
|
27
57
|
if (json === null || json === void 0 ? void 0 : json.ignoreList) {
|
|
28
58
|
if (Array.isArray(json.ignoreList)) {
|
|
29
59
|
json.ignoreList.forEach(function (item) {
|
|
@@ -43,8 +73,8 @@ var LintConfig = /** @class */ (function () {
|
|
|
43
73
|
if (json === null || json === void 0 ? void 0 : json.noEncodedPasswords) {
|
|
44
74
|
this.lineLintRules.push(line_1.noEncodedPasswords);
|
|
45
75
|
}
|
|
46
|
-
if (json === null || json === void 0 ? void 0 : json.noTabIndentation) {
|
|
47
|
-
this.lineLintRules.push(line_1.
|
|
76
|
+
if ((json === null || json === void 0 ? void 0 : json.noTabs) || (json === null || json === void 0 ? void 0 : json.noTabIndentation)) {
|
|
77
|
+
this.lineLintRules.push(line_1.noTabs);
|
|
48
78
|
}
|
|
49
79
|
if (json === null || json === void 0 ? void 0 : json.maxLineLength) {
|
|
50
80
|
this.maxLineLength = json.maxLineLength;
|
|
@@ -86,6 +116,24 @@ var LintConfig = /** @class */ (function () {
|
|
|
86
116
|
if (json === null || json === void 0 ? void 0 : json.strictMacroDefinition) {
|
|
87
117
|
this.fileLintRules.push(file_1.strictMacroDefinition);
|
|
88
118
|
}
|
|
119
|
+
if (json === null || json === void 0 ? void 0 : json.severityLevel) {
|
|
120
|
+
try {
|
|
121
|
+
for (var _b = __values(Object.entries(json.severityLevel)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
122
|
+
var _d = __read(_c.value, 2), rule = _d[0], severity = _d[1];
|
|
123
|
+
if (severity === 'warn')
|
|
124
|
+
this.severityLevel[rule] = Severity_1.Severity.Warning;
|
|
125
|
+
if (severity === 'error')
|
|
126
|
+
this.severityLevel[rule] = Severity_1.Severity.Error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
130
|
+
finally {
|
|
131
|
+
try {
|
|
132
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
133
|
+
}
|
|
134
|
+
finally { if (e_1) throw e_1.error; }
|
|
135
|
+
}
|
|
136
|
+
}
|
|
89
137
|
}
|
|
90
138
|
return LintConfig;
|
|
91
139
|
}());
|
package/types/LintConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
|
package/types/LintRule.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getIndicesOf: (searchStr: string, str: string, caseSensitive?: boolean) => number[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIndicesOf = void 0;
|
|
4
|
+
var getIndicesOf = function (searchStr, str, caseSensitive) {
|
|
5
|
+
if (caseSensitive === void 0) { caseSensitive = true; }
|
|
6
|
+
var searchStrLen = searchStr.length;
|
|
7
|
+
if (searchStrLen === 0) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
var startIndex = 0, index, indices = [];
|
|
11
|
+
if (!caseSensitive) {
|
|
12
|
+
str = str.toLowerCase();
|
|
13
|
+
searchStr = searchStr.toLowerCase();
|
|
14
|
+
}
|
|
15
|
+
while ((index = str.indexOf(searchStr, startIndex)) > -1) {
|
|
16
|
+
indices.push(index);
|
|
17
|
+
startIndex = index + searchStrLen;
|
|
18
|
+
}
|
|
19
|
+
return indices;
|
|
20
|
+
};
|
|
21
|
+
exports.getIndicesOf = getIndicesOf;
|
|
22
|
+
//# sourceMappingURL=getIndicesOf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIndicesOf.js","sourceRoot":"","sources":["../../src/utils/getIndicesOf.ts"],"names":[],"mappings":";;;AAAO,IAAM,YAAY,GAAG,UAC1B,SAAiB,EACjB,GAAW,EACX,aAA6B;IAA7B,8BAAA,EAAA,oBAA6B;IAE7B,IAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAA;IACrC,IAAI,YAAY,KAAK,CAAC,EAAE;QACtB,OAAO,EAAE,CAAA;KACV;IAED,IAAI,UAAU,GAAG,CAAC,EAChB,KAAK,EACL,OAAO,GAAG,EAAE,CAAA;IAEd,IAAI,CAAC,aAAa,EAAE;QAClB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QACvB,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;KACpC;IAED,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;QACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,UAAU,GAAG,KAAK,GAAG,YAAY,CAAA;KAClC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAzBY,QAAA,YAAY,gBAyBxB"}
|
package/utils/index.d.ts
CHANGED
package/utils/index.js
CHANGED
|
@@ -16,4 +16,5 @@ __exportStar(require("./getProjectRoot"), exports);
|
|
|
16
16
|
__exportStar(require("./isIgnored"), exports);
|
|
17
17
|
__exportStar(require("./listSasFiles"), exports);
|
|
18
18
|
__exportStar(require("./splitText"), exports);
|
|
19
|
+
__exportStar(require("./getIndicesOf"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B;AAC3B,iDAA8B"}
|