@sasjs/lint 5.4.0 → 5.5.1

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 CHANGED
@@ -29,6 +29,7 @@ Configuration is via a `.sasjslint` file with the following structure (these are
29
29
  "ignoredLibnames": [],
30
30
  "ignoredMacros": ["webout"],
31
31
  "indentationMultiple": 2,
32
+ "keywordCase": "preserve",
32
33
  "lineEndings": "off",
33
34
  "lowerCaseFileNames": true,
34
35
  "lowerCaseMacroNames": true,
@@ -59,7 +60,7 @@ Configuration is via a `.sasjslint` file with the following structure (these are
59
60
 
60
61
  Two keys do not have a section of their own. `requiredMacroOptions` is documented with [`hasRequiredMacroOptions`](#hasrequiredmacrooptions), the rule it configures. The deprecated alias `noTabIndentation` is accepted in place of `noTabs`, and is therefore not listed above - it is an alternative spelling rather than a setting of its own.
61
62
 
62
- The file is read as strict JSON, so it cannot carry comments: a file that does not parse is reported as an error, naming the file, rather than being treated as though no configuration were present. Add `"$schema": "https://cli.sasjs.io/sasjslint-schema.json"` to get completion, hover text and validation for every setting in an editor that understands JSON schemas - `sasjs lint init` and a SASjs Server's seeded drive-root file both write it.
63
+ The file is read as strict JSON, so it cannot carry comments: a file that does not parse is reported as an error, naming the file, rather than being treated as though no configuration were present. Add `"$schema": "https://raw.githubusercontent.com/sasjs/lint/main/sasjslint-schema.json"` to get completion, hover text and validation for every setting in an editor that understands JSON schemas - `sasjs lint init` and a SASjs Server's seeded drive-root file both write it.
63
64
 
64
65
  ## SAS Lint Settings
65
66
 
@@ -162,6 +163,14 @@ If creating a new value, use `{lineEnding}` instead of `\n`, eg as follows:
162
163
  }
163
164
  ```
164
165
 
166
+ ### keywordCase
167
+
168
+ The case the formatter gives SAS keywords. `preserve` leaves them as written, which is what the printer does when nothing is asked of it; `upper` and `lower` rewrite them.
169
+
170
+ It is a formatting setting rather than a rule - casing is a house style, and reporting it on every line would bury the rules that describe defects - and it takes effect when the formatter is given a layout engine. Every caller with a SAS printer supplies one (`@sasjs/sas-language` is where ours comes from), because the words worth changing are the ones that engine's lexer identifies. Strings and comments are left alone; a name the lexer cannot tell from a keyword - a DATA step variable called `label` - is cased with it.
171
+
172
+ - Default: preserve
173
+
165
174
  ### hasDoxygenHeader
166
175
 
167
176
  The SASjs framework recommends the use of Doxygen headers for describing all types of SAS program. This check identifies files where a Doxygen header does not begin on the first line, where it opens with a single asterisk, where it closes with one, where the close shares its line with the header's content, and where the block is never closed. A header is located by its close: the line that holds nothing but `**/`, which is the form `sasjs compile` and this rule set read. A block opened with `/**` whose close sits at the end of a content line, or which has no close at all, is therefore not yet a header.
@@ -1,9 +1,11 @@
1
1
  import { FormatResult } from '../types';
2
2
  import { LintConfig } from '../types/LintConfig';
3
+ import { FormatOptions } from '../types/FormatOptions';
3
4
  /**
4
5
  * Applies automatic formatting to the file at the given path.
5
6
  * @param {string} filePath - the path to the file to be formatted.
6
7
  * @param {LintConfig} configuration - an optional configuration. When not passed in, this is read from the .sasjslint file.
8
+ * @param {FormatOptions} options - an optional layout engine, used for the reprint pass.
7
9
  * @returns {Promise<FormatResult>} Resolves successfully when the file has been formatted.
8
10
  */
9
- export declare const formatFile: (filePath: string, configuration?: LintConfig) => Promise<FormatResult>;
11
+ export declare const formatFile: (filePath: string, configuration?: LintConfig, options?: FormatOptions) => Promise<FormatResult>;
@@ -12,21 +12,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.formatFile = void 0;
13
13
  const file_1 = require("@sasjs/utils/file");
14
14
  const lint_1 = require("../lint");
15
- const parseLintOverride_1 = require("../utils/parseLintOverride");
16
15
  const getLintConfig_1 = require("../utils/getLintConfig");
17
- const shared_1 = require("./shared");
16
+ const formatText_1 = require("./formatText");
18
17
  /**
19
18
  * Applies automatic formatting to the file at the given path.
20
19
  * @param {string} filePath - the path to the file to be formatted.
21
20
  * @param {LintConfig} configuration - an optional configuration. When not passed in, this is read from the .sasjslint file.
21
+ * @param {FormatOptions} options - an optional layout engine, used for the reprint pass.
22
22
  * @returns {Promise<FormatResult>} Resolves successfully when the file has been formatted.
23
23
  */
24
- const formatFile = (filePath, configuration) => __awaiter(void 0, void 0, void 0, function* () {
24
+ const formatFile = (filePath_1, configuration_1, ...args_1) => __awaiter(void 0, [filePath_1, configuration_1, ...args_1], void 0, function* (filePath, configuration, options = {}) {
25
25
  const config = configuration || (yield (0, getLintConfig_1.getLintConfig)());
26
26
  const diagnosticsBeforeFormat = yield (0, lint_1.lintFile)(filePath, config);
27
27
  const diagnosticsCountBeforeFormat = diagnosticsBeforeFormat.length;
28
28
  const text = yield (0, file_1.readFile)(filePath);
29
- const formattedText = (0, shared_1.processText)(text, (0, parseLintOverride_1.applyLintOverride)(text, config));
29
+ const formattedText = yield (0, formatText_1.formatText)(text, config, options);
30
30
  yield (0, file_1.createFile)(filePath, formattedText);
31
31
  const diagnosticsAfterFormat = yield (0, lint_1.lintFile)(filePath, config);
32
32
  const diagnosticsCountAfterFormat = diagnosticsAfterFormat.length;
@@ -1 +1 @@
1
- {"version":3,"file":"formatFile.js","sourceRoot":"","sources":["../../src/format/formatFile.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAwD;AACxD,kCAAkC;AAGlC,kEAA8D;AAC9D,0DAAsD;AACtD,qCAAsC;AAEtC;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CACxB,QAAgB,EAChB,aAA0B,EACH,EAAE;IACzB,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,6BAAa,GAAE,CAAC,CAAA;IACvD,MAAM,uBAAuB,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,MAAM,4BAA4B,GAAG,uBAAuB,CAAC,MAAM,CAAA;IAEnE,MAAM,IAAI,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAA;IAErC,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAA,qCAAiB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAExE,MAAM,IAAA,iBAAU,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAEzC,MAAM,sBAAsB,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC/D,MAAM,2BAA2B,GAAG,sBAAsB,CAAC,MAAM,CAAA;IAEjE,MAAM,qBAAqB,GACzB,4BAA4B,GAAG,2BAA2B,CAAA;IAE5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;IAErC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB,EAAE,sBAAsB;KAC3C,CAAA;AACH,CAAC,CAAA,CAAA;AA/BY,QAAA,UAAU,cA+BtB"}
1
+ {"version":3,"file":"formatFile.js","sourceRoot":"","sources":["../../src/format/formatFile.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAwD;AACxD,kCAAkC;AAGlC,0DAAsD;AAEtD,6CAAyC;AAEzC;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,yCAID,EAAE,gFAHzB,QAAgB,EAChB,aAA0B,EAC1B,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,6BAAa,GAAE,CAAC,CAAA;IACvD,MAAM,uBAAuB,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,MAAM,4BAA4B,GAAG,uBAAuB,CAAC,MAAM,CAAA;IAEnE,MAAM,IAAI,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,CAAC,CAAA;IAErC,MAAM,aAAa,GAAG,MAAM,IAAA,uBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7D,MAAM,IAAA,iBAAU,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAEzC,MAAM,sBAAsB,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC/D,MAAM,2BAA2B,GAAG,sBAAsB,CAAC,MAAM,CAAA;IAEjE,MAAM,qBAAqB,GACzB,4BAA4B,GAAG,2BAA2B,CAAA;IAE5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;IAErC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB,EAAE,sBAAsB;KAC3C,CAAA;AACH,CAAC,CAAA,CAAA;AAhCY,QAAA,UAAU,cAgCtB"}
@@ -1,9 +1,11 @@
1
1
  import { FormatResult } from '../types';
2
2
  import { LintConfig } from '../types/LintConfig';
3
+ import { FormatOptions } from '../types/FormatOptions';
3
4
  /**
4
5
  * Automatically formats all SAS files in the folder at the given path.
5
6
  * @param {string} folderPath - the path to the folder to be formatted.
6
7
  * @param {LintConfig} configuration - an optional configuration. When not passed in, this is read from the .sasjslint file.
8
+ * @param {FormatOptions} options - an optional layout engine, passed to every file.
7
9
  * @returns {Promise<FormatResult>} Resolves successfully when all SAS files in the given folder have been formatted.
8
10
  */
9
- export declare const formatFolder: (folderPath: string, configuration?: LintConfig) => Promise<FormatResult>;
11
+ export declare const formatFolder: (folderPath: string, configuration?: LintConfig, options?: FormatOptions) => Promise<FormatResult>;
@@ -20,6 +20,14 @@ const asyncForEach_1 = require("../utils/asyncForEach");
20
20
  const getLintConfig_1 = require("../utils/getLintConfig");
21
21
  const listSasFiles_1 = require("../utils/listSasFiles");
22
22
  const formatFile_1 = require("./formatFile");
23
+ /**
24
+ * One line of the aggregate raised when a walk finishes with failures.
25
+ *
26
+ * The engine is the caller's own function, so what it throws is not necessarily an
27
+ * Error - a string is enough - and `error.message` on one of those reads
28
+ * `undefined`, dropping the reason the rejection was passed on for.
29
+ */
30
+ const describeFailure = (where, error) => `${where}: ${error instanceof Error ? error.message : String(error)}`;
23
31
  const excludeFolders = [
24
32
  '.git',
25
33
  '.github',
@@ -32,32 +40,55 @@ const excludeFolders = [
32
40
  * Automatically formats all SAS files in the folder at the given path.
33
41
  * @param {string} folderPath - the path to the folder to be formatted.
34
42
  * @param {LintConfig} configuration - an optional configuration. When not passed in, this is read from the .sasjslint file.
43
+ * @param {FormatOptions} options - an optional layout engine, passed to every file.
35
44
  * @returns {Promise<FormatResult>} Resolves successfully when all SAS files in the given folder have been formatted.
36
45
  */
37
- const formatFolder = (folderPath, configuration) => __awaiter(void 0, void 0, void 0, function* () {
46
+ const formatFolder = (folderPath_1, configuration_1, ...args_1) => __awaiter(void 0, [folderPath_1, configuration_1, ...args_1], void 0, function* (folderPath, configuration, options = {}) {
38
47
  const config = configuration || (yield (0, getLintConfig_1.getLintConfig)());
39
- const diagnosticsBeforeFormat = yield (0, lint_1.lintFolder)(folderPath);
48
+ // The counts have to be measured with the same configuration the files are
49
+ // formatted by, or a rule the caller switched off is still counted as unfixed.
50
+ const diagnosticsBeforeFormat = yield (0, lint_1.lintFolder)(folderPath, config);
40
51
  const diagnosticsCountBeforeFormat = Array.from(diagnosticsBeforeFormat.values()).reduce((a, b) => a + b.length, 0);
41
52
  const fileNames = yield (0, listSasFiles_1.listSasFiles)(folderPath);
53
+ // A file the engine refuses must not decide what happens to the rest of the
54
+ // tree: the walk continues and the failures are raised together at the end, so
55
+ // one unformattable buffer cannot leave a project half written.
56
+ const failures = [];
42
57
  yield (0, asyncForEach_1.asyncForEach)(fileNames, (fileName) => __awaiter(void 0, void 0, void 0, function* () {
43
58
  const filePath = path_1.default.join(folderPath, fileName);
44
- yield (0, formatFile_1.formatFile)(filePath);
59
+ try {
60
+ yield (0, formatFile_1.formatFile)(filePath, config, options);
61
+ }
62
+ catch (error) {
63
+ failures.push(describeFailure(filePath, error));
64
+ }
45
65
  }));
46
66
  const subFolders = (yield (0, file_1.listSubFoldersInFolder)(folderPath)).filter((f) => !excludeFolders.includes(f));
47
67
  yield (0, asyncForEach_1.asyncForEach)(subFolders, (subFolder) => __awaiter(void 0, void 0, void 0, function* () {
48
- yield (0, exports.formatFolder)(path_1.default.join(folderPath, subFolder), config);
68
+ try {
69
+ yield (0, exports.formatFolder)(path_1.default.join(folderPath, subFolder), config, options);
70
+ }
71
+ catch (error) {
72
+ failures.push(describeFailure(path_1.default.join(folderPath, subFolder), error));
73
+ }
49
74
  }));
50
- const diagnosticsAfterFormat = yield (0, lint_1.lintFolder)(folderPath);
75
+ const diagnosticsAfterFormat = yield (0, lint_1.lintFolder)(folderPath, config);
51
76
  const diagnosticsCountAfterFormat = Array.from(diagnosticsAfterFormat.values()).reduce((a, b) => a + b.length, 0);
52
77
  const fixedDiagnosticsCount = diagnosticsCountBeforeFormat - diagnosticsCountAfterFormat;
53
78
  const updatedFilePaths = [];
79
+ // Both maps come from lintFolder over the same file list, so every path in
80
+ // before is in after as well - a fallback there would be a branch no run reaches.
54
81
  Array.from(diagnosticsBeforeFormat.keys()).forEach((filePath) => {
55
- const diagnosticsBefore = diagnosticsBeforeFormat.get(filePath) || [];
56
- const diagnosticsAfter = diagnosticsAfterFormat.get(filePath) || [];
82
+ const diagnosticsBefore = diagnosticsBeforeFormat.get(filePath);
83
+ const diagnosticsAfter = diagnosticsAfterFormat.get(filePath);
57
84
  if (diagnosticsBefore.length !== diagnosticsAfter.length) {
58
85
  updatedFilePaths.push(filePath);
59
86
  }
60
87
  });
88
+ if (failures.length) {
89
+ throw new Error(`Could not format ${failures.length} file(s). Everything else was formatted.\n` +
90
+ failures.map((failure) => ` ${failure}`).join('\n'));
91
+ }
61
92
  return {
62
93
  updatedFilePaths,
63
94
  fixedDiagnosticsCount,
@@ -1 +1 @@
1
- {"version":3,"file":"formatFolder.js","sourceRoot":"","sources":["../../src/format/formatFolder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAA0D;AAC1D,gDAAuB;AACvB,kCAAoC;AAGpC,wDAAoD;AACpD,0DAAsD;AACtD,wDAAoD;AACpD,6CAAyC;AAEzC,MAAM,cAAc,GAAG;IACrB,MAAM;IACN,SAAS;IACT,SAAS;IACT,cAAc;IACd,YAAY;IACZ,cAAc;CACf,CAAA;AAED;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAC1B,UAAkB,EAClB,aAA0B,EACH,EAAE;IACzB,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,6BAAa,GAAE,CAAC,CAAA;IACvD,MAAM,uBAAuB,GAAG,MAAM,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAA;IAC5D,MAAM,4BAA4B,GAAG,KAAK,CAAC,IAAI,CAC7C,uBAAuB,CAAC,MAAM,EAAE,CACjC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAEnC,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAY,EAAC,UAAU,CAAC,CAAA;IAChD,MAAM,IAAA,2BAAY,EAAC,SAAS,EAAE,CAAO,QAAQ,EAAE,EAAE;QAC/C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,IAAA,uBAAU,EAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC,CAAA,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,MAAM,IAAA,6BAAsB,EAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAClE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3C,CAAA;IAED,MAAM,IAAA,2BAAY,EAAC,UAAU,EAAE,CAAO,SAAS,EAAE,EAAE;QACjD,MAAM,IAAA,oBAAY,EAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC,CAAA,CAAC,CAAA;IAEF,MAAM,sBAAsB,GAAG,MAAM,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAA;IAC3D,MAAM,2BAA2B,GAAG,KAAK,CAAC,IAAI,CAC5C,sBAAsB,CAAC,MAAM,EAAE,CAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAEnC,MAAM,qBAAqB,GACzB,4BAA4B,GAAG,2BAA2B,CAAA;IAE5D,MAAM,gBAAgB,GAAa,EAAE,CAAA;IAErC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9D,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEnE,IAAI,iBAAiB,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACzD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB,EAAE,sBAAsB;KAC3C,CAAA;AACH,CAAC,CAAA,CAAA;AAhDY,QAAA,YAAY,gBAgDxB"}
1
+ {"version":3,"file":"formatFolder.js","sourceRoot":"","sources":["../../src/format/formatFolder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { FormatResult } from '../types/FormatResult';
2
+ import { FormatOptions } from '../types/FormatOptions';
2
3
  /**
3
4
  * Automatically formats all SAS files in the current project.
4
5
  * @returns {Promise<FormatResult>} Resolves successfully when all SAS files in the current project have been formatted.
5
6
  */
6
- export declare const formatProject: () => Promise<FormatResult>;
7
+ export declare const formatProject: (options?: FormatOptions) => Promise<FormatResult>;
@@ -16,13 +16,13 @@ const formatFolder_1 = require("./formatFolder");
16
16
  * Automatically formats all SAS files in the current project.
17
17
  * @returns {Promise<FormatResult>} Resolves successfully when all SAS files in the current project have been formatted.
18
18
  */
19
- const formatProject = () => __awaiter(void 0, void 0, void 0, function* () {
19
+ const formatProject = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (options = {}) {
20
20
  const projectRoot = (yield (0, getProjectRoot_1.getProjectRoot)()) || process.currentDir;
21
21
  if (!projectRoot) {
22
22
  throw new Error('SASjs Project Root was not found.');
23
23
  }
24
24
  console.info(`Formatting all .sas files under ${projectRoot}`);
25
- return yield (0, formatFolder_1.formatFolder)(projectRoot);
25
+ return yield (0, formatFolder_1.formatFolder)(projectRoot, undefined, options);
26
26
  });
27
27
  exports.formatProject = formatProject;
28
28
  //# sourceMappingURL=formatProject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatProject.js","sourceRoot":"","sources":["../../src/format/formatProject.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,4DAAwD;AACxD,iDAA6C;AAE7C;;;GAGG;AACI,MAAM,aAAa,GAAG,GAAgC,EAAE;IAC7D,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,+BAAc,GAAE,CAAC,IAAI,OAAO,CAAC,UAAU,CAAA;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAA;IAE9D,OAAO,MAAM,IAAA,2BAAY,EAAC,WAAW,CAAC,CAAA;AACxC,CAAC,CAAA,CAAA;AATY,QAAA,aAAa,iBASzB"}
1
+ {"version":3,"file":"formatProject.js","sourceRoot":"","sources":["../../src/format/formatProject.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,4DAAwD;AACxD,iDAA6C;AAE7C;;;GAGG;AACI,MAAM,aAAa,GAAG,YAEJ,EAAE,mDADzB,UAAyB,EAAE;IAE3B,MAAM,WAAW,GAAG,CAAC,MAAM,IAAA,+BAAc,GAAE,CAAC,IAAI,OAAO,CAAC,UAAU,CAAA;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAA;IAE9D,OAAO,MAAM,IAAA,2BAAY,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAC5D,CAAC,CAAA,CAAA;AAXY,QAAA,aAAa,iBAWzB"}
@@ -1,2 +1,20 @@
1
+ import { FormatOptions } from '../types/FormatOptions';
1
2
  import { LintConfig } from '../types';
2
- export declare const formatText: (text: string, configuration?: LintConfig) => Promise<string>;
3
+ /**
4
+ * Formats SAS text: the caller's reprint pass if one was supplied, then the
5
+ * configured rules.
6
+ *
7
+ * The order is deliberate. A reprint decides where lines break and how blocks are
8
+ * indented, so the rules that wrap and trim have to run over its output - applying
9
+ * them to the original text and reprinting afterwards would undo both. The lint
10
+ * override comment travels with the text through the reprint (it is a comment),
11
+ * so `keywordCase` from an `@sasjslint` line applies to the same buffer.
12
+ *
13
+ * A rejection from the engine is not caught: its message is the one that says why
14
+ * (`@sasjs/sas-language` names the data file it could not read, for example), and
15
+ * a formatter that swallowed it would return a buffer that looks formatted and is
16
+ * not. `formatFolder` is the one place that catches, because there a single
17
+ * refusal must not stop the walk - it collects them and raises them together once
18
+ * the tree is done.
19
+ */
20
+ export declare const formatText: (text: string, configuration?: LintConfig, options?: FormatOptions) => Promise<string>;
@@ -12,9 +12,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.formatText = void 0;
13
13
  const utils_1 = require("../utils");
14
14
  const shared_1 = require("./shared");
15
- const formatText = (text, configuration) => __awaiter(void 0, void 0, void 0, function* () {
16
- const config = configuration || (yield (0, utils_1.getLintConfig)());
17
- return (0, shared_1.processText)(text, (0, utils_1.applyLintOverride)(text, config));
15
+ /**
16
+ * Formats SAS text: the caller's reprint pass if one was supplied, then the
17
+ * configured rules.
18
+ *
19
+ * The order is deliberate. A reprint decides where lines break and how blocks are
20
+ * indented, so the rules that wrap and trim have to run over its output - applying
21
+ * them to the original text and reprinting afterwards would undo both. The lint
22
+ * override comment travels with the text through the reprint (it is a comment),
23
+ * so `keywordCase` from an `@sasjslint` line applies to the same buffer.
24
+ *
25
+ * A rejection from the engine is not caught: its message is the one that says why
26
+ * (`@sasjs/sas-language` names the data file it could not read, for example), and
27
+ * a formatter that swallowed it would return a buffer that looks formatted and is
28
+ * not. `formatFolder` is the one place that catches, because there a single
29
+ * refusal must not stop the walk - it collects them and raises them together once
30
+ * the tree is done.
31
+ */
32
+ const formatText = (text_1, configuration_1, ...args_1) => __awaiter(void 0, [text_1, configuration_1, ...args_1], void 0, function* (text, configuration, options = {}) {
33
+ const config = (0, utils_1.applyLintOverride)(text, configuration || (yield (0, utils_1.getLintConfig)()));
34
+ const formatted = options.reprint
35
+ ? yield options.reprint(text, { keywordCase: config.keywordCase })
36
+ : text;
37
+ return (0, shared_1.processText)(formatted, config);
18
38
  });
19
39
  exports.formatText = formatText;
20
40
  //# sourceMappingURL=formatText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatText.js","sourceRoot":"","sources":["../../src/format/formatText.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oCAA2D;AAC3D,qCAAsC;AAE/B,MAAM,UAAU,GAAG,CAAO,IAAY,EAAE,aAA0B,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,MAAM,IAAA,qBAAa,GAAE,CAAC,CAAA;IACvD,OAAO,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAA,yBAAiB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;AAC3D,CAAC,CAAA,CAAA;AAHY,QAAA,UAAU,cAGtB"}
1
+ {"version":3,"file":"formatText.js","sourceRoot":"","sources":["../../src/format/formatText.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,oCAA2D;AAC3D,qCAAsC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACI,MAAM,UAAU,GAAG,qCAIxB,EAAE,4EAHF,IAAY,EACZ,aAA0B,EAC1B,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAA,yBAAiB,EAC9B,IAAI,EACJ,aAAa,IAAI,CAAC,MAAM,IAAA,qBAAa,GAAE,CAAC,CACzC,CAAA;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO;QAC/B,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAClE,CAAC,CAAC,IAAI,CAAA;IAER,OAAO,IAAA,oBAAW,EAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA,CAAA;AAfY,QAAA,UAAU,cAetB"}
package/package.json CHANGED
@@ -42,8 +42,8 @@
42
42
  "homepage": "https://github.com/sasjs/lint#readme",
43
43
  "devDependencies": {
44
44
  "@nogoo9/gitleaks": "8.30.1-post.2",
45
- "@sasjs/release": "0.1.3",
46
- "@sasjs/sas-language": "0.3.3",
45
+ "@sasjs/release": "0.4.0",
46
+ "@sasjs/sas-language": "0.6.0",
47
47
  "@stryker-mutator/core": "10.1.1",
48
48
  "@stryker-mutator/jest-runner": "10.1.1",
49
49
  "@types/jest": "30.0.0",
@@ -80,7 +80,7 @@
80
80
  "glob": "^14.0.2",
81
81
  "minimatch": "^11.0.1"
82
82
  },
83
- "version": "5.4.0",
83
+ "version": "5.5.1",
84
84
  "devEngines": {
85
85
  "runtime": {
86
86
  "name": "node",
@@ -40,7 +40,8 @@
40
40
  "noXcmd": true,
41
41
  "requiredMacroOptions": [],
42
42
  "severityLevel": {},
43
- "strictMacroDefinition": true
43
+ "strictMacroDefinition": true,
44
+ "keywordCase": "preserve"
44
45
  },
45
46
  "examples": [
46
47
  {
@@ -183,6 +184,14 @@
183
184
  "default": 2,
184
185
  "examples": [2, 3, 4]
185
186
  },
187
+ "keywordCase": {
188
+ "$id": "#/properties/keywordCase",
189
+ "type": "string",
190
+ "title": "keywordCase",
191
+ "description": "The case the formatter gives SAS keywords, once it is given a layout engine (see formatText). Applied by that engine's lexer: strings and comments are left alone, but a name it cannot tell from a keyword - a DATA step variable called label - is cased with it. Defaults to preserve.",
192
+ "enum": ["upper", "lower", "preserve"],
193
+ "default": "preserve"
194
+ },
186
195
  "lowerCaseFileNames": {
187
196
  "$id": "#/properties/lowerCaseFileNames",
188
197
  "type": "boolean",
@@ -0,0 +1,29 @@
1
+ import { KeywordCase } from './KeywordCase';
2
+ /**
3
+ * How a caller supplies the layout engine to the formatter.
4
+ *
5
+ * `@sasjs/lint` owns the rules - the header, line length, trailing spaces, the
6
+ * casing setting - and knows nothing about SAS syntax. The layout pass is a
7
+ * printer over a SAS AST, which is a much larger dependency than a linter should
8
+ * carry, so it arrives from the caller. The extension and the server already
9
+ * depend on `@sasjs/sas-language`; the CLI does not, and follows once this option
10
+ * is threaded through the command that formats projects. A project that only
11
+ * lints installs none of it either way.
12
+ *
13
+ * Without an engine the formatter applies the rules to the text as it stands,
14
+ * which is what it has always done. With one, the reprint happens first and the
15
+ * rules run over the result, so line wrapping applies to the final layout rather
16
+ * than to the original.
17
+ */
18
+ export interface FormatOptions {
19
+ /**
20
+ * Reprints a SAS program, in the style of `formatText` from
21
+ * `@sasjs/sas-language`. Receives the `keywordCase` from the configuration,
22
+ * because the words are identified by its lexer - a rule here could only guess
23
+ * from a list of statement names, and no such list carries `else` or the
24
+ * statements inside a procedure.
25
+ */
26
+ reprint?: (text: string, options: {
27
+ keywordCase: KeywordCase;
28
+ }) => Promise<string>;
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FormatOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatOptions.js","sourceRoot":"","sources":["../../src/types/FormatOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The case the formatter gives SAS keywords.
3
+ *
4
+ * One declaration, because the value travels from the `.sasjslint` setting into
5
+ * the engine's options: spelled out in both places, a fourth value could be added
6
+ * to one and silently rejected by the other. The JSON schema keeps its own copy -
7
+ * it is not TypeScript - and the suite asserts the three agree.
8
+ */
9
+ export declare const KEYWORD_CASES: readonly ["upper", "lower", "preserve"];
10
+ export type KeywordCase = (typeof KEYWORD_CASES)[number];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KEYWORD_CASES = void 0;
4
+ /**
5
+ * The case the formatter gives SAS keywords.
6
+ *
7
+ * One declaration, because the value travels from the `.sasjslint` setting into
8
+ * the engine's options: spelled out in both places, a fourth value could be added
9
+ * to one and silently rejected by the other. The JSON schema keeps its own copy -
10
+ * it is not TypeScript - and the suite asserts the three agree.
11
+ */
12
+ exports.KEYWORD_CASES = ['upper', 'lower', 'preserve'];
13
+ //# sourceMappingURL=KeywordCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeywordCase.js","sourceRoot":"","sources":["../../src/types/KeywordCase.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACU,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAU,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { LineEndings } from './LineEndings';
2
+ import { KeywordCase } from './KeywordCase';
2
3
  import { FileLintRule, LineLintRule, PathLintRule } from './LintRule';
3
4
  import { Severity } from './Severity';
4
5
  /**
@@ -37,6 +38,15 @@ export declare class LintConfig {
37
38
  readonly ignoredLibnames: string[];
38
39
  readonly ignoredMacros: string[];
39
40
  readonly bannedStrings: string[];
41
+ /**
42
+ * Case the formatter gives keywords, when a reprint engine is supplied.
43
+ *
44
+ * The setting lives here because that is where a house style is decided; the
45
+ * words themselves come from the engine's lexer. It is not a lint rule: casing
46
+ * is a formatting choice, and reporting it on every line would drown the rules
47
+ * that describe defects.
48
+ */
49
+ readonly keywordCase: KeywordCase;
40
50
  constructor(json?: any);
41
51
  /**
42
52
  * Returns a new configuration with an override merged over this one, so a
@@ -5,6 +5,7 @@ const file_1 = require("../rules/file");
5
5
  const line_1 = require("../rules/line");
6
6
  const path_1 = require("../rules/path");
7
7
  const LineEndings_1 = require("./LineEndings");
8
+ const KeywordCase_1 = require("./KeywordCase");
8
9
  const utils_1 = require("../utils");
9
10
  const mergeLintConfig_1 = require("../utils/mergeLintConfig");
10
11
  const Severity_1 = require("./Severity");
@@ -34,6 +35,15 @@ class LintConfig {
34
35
  this.ignoredLibnames = [];
35
36
  this.ignoredMacros = [];
36
37
  this.bannedStrings = [];
38
+ /**
39
+ * Case the formatter gives keywords, when a reprint engine is supplied.
40
+ *
41
+ * The setting lives here because that is where a house style is decided; the
42
+ * words themselves come from the engine's lexer. It is not a lint rule: casing
43
+ * is a formatting choice, and reporting it on every line would drown the rules
44
+ * that describe defects.
45
+ */
46
+ this.keywordCase = 'preserve';
37
47
  this.source = json !== null && json !== void 0 ? json : {};
38
48
  if (json === null || json === void 0 ? void 0 : json.ignoreList) {
39
49
  if (Array.isArray(json.ignoreList)) {
@@ -66,6 +76,13 @@ class LintConfig {
66
76
  }
67
77
  });
68
78
  }
79
+ if ((json === null || json === void 0 ? void 0 : json.keywordCase) !== undefined) {
80
+ const value = json.keywordCase;
81
+ if (!KeywordCase_1.KEYWORD_CASES.includes(value)) {
82
+ throw new Error(`Property "keywordCase" can only be "upper", "lower" or "preserve".`);
83
+ }
84
+ this.keywordCase = value;
85
+ }
69
86
  if ((json === null || json === void 0 ? void 0 : json.noTrailingSpaces) !== false) {
70
87
  this.lineLintRules.push(line_1.noTrailingSpaces);
71
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
package/types/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from './Diagnostic';
2
2
  export * from './FormatResult';
3
+ export * from './FormatOptions';
4
+ export * from './KeywordCase';
3
5
  export * from './LintConfig';
4
6
  export * from './LintRule';
5
7
  export * from './LintRuleType';
package/types/index.js CHANGED
@@ -16,6 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Diagnostic"), exports);
18
18
  __exportStar(require("./FormatResult"), exports);
19
+ __exportStar(require("./FormatOptions"), exports);
20
+ __exportStar(require("./KeywordCase"), exports);
19
21
  __exportStar(require("./LintConfig"), exports);
20
22
  __exportStar(require("./LintRule"), exports);
21
23
  __exportStar(require("./LintRuleType"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,iDAA8B;AAC9B,+CAA4B;AAC5B,6CAA0B;AAC1B,iDAA8B;AAC9B,6CAA0B;AAC1B,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,iDAA8B;AAC9B,kDAA+B;AAC/B,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B;AAC1B,iDAA8B;AAC9B,6CAA0B;AAC1B,0CAAuB"}
@@ -21,6 +21,7 @@ export declare const DefaultLintConfiguration: {
21
21
  ignoredLibnames: never[];
22
22
  ignoredMacros: string[];
23
23
  indentationMultiple: number;
24
+ keywordCase: string;
24
25
  lineEndings: LineEndings;
25
26
  lowerCaseFileNames: boolean;
26
27
  lowerCaseMacroNames: boolean;
@@ -58,6 +59,14 @@ export declare const DefaultLintConfiguration: {
58
59
  * @returns {Promise<LintConfig>} resolves with an object representing the current lint configuration.
59
60
  */
60
61
  export declare function getLintConfig(): Promise<LintConfig>;
62
+ /**
63
+ * Where the settings of a `.sasjslint` are documented.
64
+ *
65
+ * This is the schema itself, not the `cli.sasjs.io` address that redirects to
66
+ * it: an editor that will not follow a `$ref` to another host (VS Code does
67
+ * not) reports that one as untrusted and offers no completions.
68
+ */
69
+ export declare const lintSchemaUrl = "https://raw.githubusercontent.com/sasjs/lint/main/sasjslint-schema.json";
61
70
  /**
62
71
  * Reads the configuration file, turning a parse failure into a message that
63
72
  * names the file and says what to do about it. A raw `JSON.parse` error reads
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.parseLintConfig = exports.DefaultLintConfiguration = exports.getDefaultHeader = void 0;
15
+ exports.parseLintConfig = exports.lintSchemaUrl = exports.DefaultLintConfiguration = exports.getDefaultHeader = void 0;
16
16
  exports.getLintConfig = getLintConfig;
17
17
  const path_1 = __importDefault(require("path"));
18
18
  const os_1 = __importDefault(require("os"));
@@ -44,6 +44,7 @@ exports.DefaultLintConfiguration = {
44
44
  ignoredLibnames: [],
45
45
  ignoredMacros: [...defaultIgnoredMacros_1.defaultIgnoredMacros],
46
46
  indentationMultiple: 2,
47
+ keywordCase: 'preserve',
47
48
  lineEndings: LineEndings_1.LineEndings.OFF,
48
49
  lowerCaseFileNames: true,
49
50
  lowerCaseMacroNames: true,
@@ -92,6 +93,14 @@ function getLintConfig() {
92
93
  return new LintConfig_1.LintConfig((0, exports.parseLintConfig)(configuration, lintFilePath));
93
94
  });
94
95
  }
96
+ /**
97
+ * Where the settings of a `.sasjslint` are documented.
98
+ *
99
+ * This is the schema itself, not the `cli.sasjs.io` address that redirects to
100
+ * it: an editor that will not follow a `$ref` to another host (VS Code does
101
+ * not) reports that one as untrusted and offers no completions.
102
+ */
103
+ exports.lintSchemaUrl = 'https://raw.githubusercontent.com/sasjs/lint/main/sasjslint-schema.json';
95
104
  /**
96
105
  * Reads the configuration file, turning a parse failure into a message that
97
106
  * names the file and says what to do about it. A raw `JSON.parse` error reads
@@ -107,7 +116,7 @@ const parseLintConfig = (configuration, filePath) => {
107
116
  throw new Error(`${filePath} is not valid JSON (${reason}).\n` +
108
117
  'The file is read as strict JSON, so it cannot carry comments. ' +
109
118
  'Every setting, its type and its default are documented in the schema: ' +
110
- 'https://cli.sasjs.io/sasjslint-schema.json');
119
+ exports.lintSchemaUrl);
111
120
  }
112
121
  };
113
122
  exports.parseLintConfig = parseLintConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"getLintConfig.js","sourceRoot":"","sources":["../../src/utils/getLintConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getLintConfig.js","sourceRoot":"","sources":["../../src/utils/getLintConfig.ts"],"names":[],"mappings":"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"}