@sasjs/lint 2.2.0 → 2.2.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
@@ -25,6 +25,7 @@ Configuration is via a `.sasjslint` file with the following structure (these are
25
25
  "hasMacroParentheses": true,
26
26
  "ignoreList": ["sajsbuild/", "sasjsresults/"],
27
27
  "indentationMultiple": 2,
28
+ "lineEndings": "off",
28
29
  "lowerCaseFileNames": true,
29
30
  "maxDataLineLength": 80,
30
31
  "maxHeaderLineLength": 80,
@@ -50,14 +51,14 @@ For more details, and the default state, see the description of each rule below.
50
51
 
51
52
  ### allowedGremlins
52
53
 
53
- An array of hex codes that represents allowed gremlins (invisible / undesirable characters). To allow all gremlins, you can also set the `noGremlins` rule to `false`.
54
+ An array of hex codes that represents allowed gremlins (invisible / undesirable characters). To allow all gremlins, you can also set the `noGremlins` rule to `false`.
54
55
 
55
56
  Example:
56
57
 
57
58
  ```json
58
59
  {
59
- "noGremlins": true,
60
- "allowedGremlins": ["0x0080", "0x3000"]
60
+ "noGremlins": true,
61
+ "allowedGremlins": ["0x0080", "0x3000"]
61
62
  }
62
63
  ```
63
64
 
@@ -122,6 +123,21 @@ This will check each line to ensure that the count of leading spaces can be divi
122
123
  - Default: 2
123
124
  - Severity: WARNING
124
125
 
126
+ ### lineEndings
127
+
128
+ This setting ensures the line endings in a file to conform the configured type. Possible values are `lf`, `crlf` and `off` (off means rule is set to be off). If the value is missing, null or undefined then the check would also be switched off (no default applied).
129
+
130
+ - Default: "off"
131
+ - Severity: WARNING
132
+
133
+ Example (to enforce unix line endings):
134
+
135
+ ```json
136
+ {
137
+ "lineEndings": "lf"
138
+ }
139
+ ```
140
+
125
141
  ### lowerCaseFileNames
126
142
 
127
143
  On *nix systems, it is imperative that autocall macros are in lowercase. When sharing code between windows and *nix systems, the difference in case sensitivity can also be a cause of lost developer time. For this reason, we recommend that sas filenames are always lowercase.
@@ -131,16 +147,16 @@ On *nix systems, it is imperative that autocall macros are in lowercase. When sh
131
147
 
132
148
  ### maxDataLineLength
133
149
 
134
- Datalines can be very wide, so to avoid the need to increase `maxLineLength` for the entire project, it is possible to raise the line length limit for the data records only. On a related note, as a developer, you should also be aware that code submitted in batch may have a default line length limit which is lower than you expect. See this [usage note](https://support.sas.com/kb/15/883.html) (and thanks to [sasutils for reminding us](https://github.com/sasjs/lint/issues/47#issuecomment-1064340104)).
150
+ Datalines can be very wide, so to avoid the need to increase `maxLineLength` for the entire project, it is possible to raise the line length limit for the data records only. On a related note, as a developer, you should also be aware that code submitted in batch may have a default line length limit which is lower than you expect. See this [usage note](https://support.sas.com/kb/15/883.html) (and thanks to [sasutils for reminding us](https://github.com/sasjs/lint/issues/47#issuecomment-1064340104)).
135
151
 
136
152
  This feature will work for the following statements:
137
153
 
138
- * cards
139
- * cards4
140
- * datalines
141
- * datalines4
142
- * parmcards
143
- * parmcards4
154
+ - cards
155
+ - cards4
156
+ - datalines
157
+ - datalines4
158
+ - parmcards
159
+ - parmcards4
144
160
 
145
161
  The `maxDataLineLength` setting is always the _higher_ of `maxDataLineLength` and `maxLineLength` (if you set a lower number, it is ignored).
146
162
 
@@ -149,13 +165,13 @@ The `maxDataLineLength` setting is always the _higher_ of `maxDataLineLength` an
149
165
 
150
166
  See also:
151
167
 
152
- * [hasDoxygenHeader](#hasdoxygenheader)
153
- * [maxHeaderLineLength](#maxheaderlinelength)
154
- * [maxLineLength](#maxlinelength)
168
+ - [hasDoxygenHeader](#hasdoxygenheader)
169
+ - [maxHeaderLineLength](#maxheaderlinelength)
170
+ - [maxLineLength](#maxlinelength)
155
171
 
156
172
  ### maxHeaderLineLength
157
173
 
158
- In a program header it can be necessary to insert items such as URLs or markdown tables, that cannot be split over multiple lines. To avoid the need to increase `maxLineLength` for the entire project, it is possible to raise the line length limit for the header section only.
174
+ In a program header it can be necessary to insert items such as URLs or markdown tables, that cannot be split over multiple lines. To avoid the need to increase `maxLineLength` for the entire project, it is possible to raise the line length limit for the header section only.
159
175
 
160
176
  The `maxHeaderLineLength` setting is always the _higher_ of `maxHeaderLineLength` and `maxLineLength` (if you set a lower number, it is ignored).
161
177
 
@@ -164,9 +180,9 @@ The `maxHeaderLineLength` setting is always the _higher_ of `maxHeaderLineLength
164
180
 
165
181
  See also:
166
182
 
167
- * [hasDoxygenHeader](#hasdoxygenheader)
168
- * [maxDataLineLength](#maxdatalinelength)
169
- * [maxLineLength](#maxlinelength)
183
+ - [hasDoxygenHeader](#hasdoxygenheader)
184
+ - [maxDataLineLength](#maxdatalinelength)
185
+ - [maxLineLength](#maxlinelength)
170
186
 
171
187
  ### maxLineLength
172
188
 
@@ -181,12 +197,12 @@ We strongly recommend a line length limit, and set the bar at 80. To turn this f
181
197
 
182
198
  See also:
183
199
 
184
- * [maxDataLineLength](#maxdatalinelength)
185
- * [maxHeaderLineLength](#maxheaderlinelength)
200
+ - [maxDataLineLength](#maxdatalinelength)
201
+ - [maxHeaderLineLength](#maxheaderlinelength)
186
202
 
187
203
  ### noGremlins
188
204
 
189
- Capture zero-width whitespace and other non-standard characters. The logic is borrowed from the [VSCode Gremlins Extension](https://github.com/nhoizey/vscode-gremlins) - if you are looking for more advanced gremlin zapping capabilities, we highly recommend to use their extension instead.
205
+ Capture zero-width whitespace and other non-standard characters. The logic is borrowed from the [VSCode Gremlins Extension](https://github.com/nhoizey/vscode-gremlins) - if you are looking for more advanced gremlin zapping capabilities, we highly recommend to use their extension instead.
190
206
 
191
207
  The list of characters can be found in this file: [https://github.com/sasjs/lint/blob/main/src/utils/gremlinCharacters.ts](https://github.com/sasjs/lint/blob/main/src/utils/gremlinCharacters.ts)
192
208
 
@@ -247,11 +263,6 @@ This setting allows the default severity to be adjusted. This is helpful when ru
247
263
  - "warn" - show warning in the log (doesn’t affect exit code)
248
264
  - "error" - show error in the log (exit code is 1 when triggered)
249
265
 
250
- ## Upcoming Linting Rules:
251
-
252
- - `noGremlins` -> identifies all invisible characters, other than spaces / tabs / line endings. If you really need that bell character, use a hex literal!
253
- - `lineEndings` -> set a standard line ending, such as LF or CRLF
254
-
255
266
  # SAS Formatter
256
267
 
257
268
  A formatter will automatically apply rules when you hit SAVE, which can save a LOT of time.
package/package.json CHANGED
@@ -51,5 +51,5 @@
51
51
  "@sasjs/utils": "2.52.0",
52
52
  "ignore": "5.2.4"
53
53
  },
54
- "version": "2.2.0"
54
+ "version": "2.2.1"
55
55
  }
@@ -182,6 +182,7 @@
182
182
  "lineEndings": {
183
183
  "$id": "#/properties/lineEndings",
184
184
  "type": "string",
185
+ "enum": ["lf", "crlf", "off"],
185
186
  "title": "lineEndings",
186
187
  "description": "Enforces the configured terminating character for each line. Shows a warning when incorrect line endings are present.",
187
188
  "default": "lf",
@@ -1,4 +1,5 @@
1
1
  export declare enum LineEndings {
2
2
  LF = "lf",
3
- CRLF = "crlf"
3
+ CRLF = "crlf",
4
+ OFF = "off"
4
5
  }
@@ -5,5 +5,6 @@ var LineEndings;
5
5
  (function (LineEndings) {
6
6
  LineEndings["LF"] = "lf";
7
7
  LineEndings["CRLF"] = "crlf";
8
+ LineEndings["OFF"] = "off";
8
9
  })(LineEndings = exports.LineEndings || (exports.LineEndings = {}));
9
10
  //# sourceMappingURL=LineEndings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineEndings.js","sourceRoot":"","sources":["../../src/types/LineEndings.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
1
+ {"version":3,"file":"LineEndings.js","sourceRoot":"","sources":["../../src/types/LineEndings.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,4BAAa,CAAA;IACb,0BAAW,CAAA;AACb,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB"}
@@ -90,12 +90,12 @@ var LintConfig = /** @class */ (function () {
90
90
  this.maxDataLineLength = json.maxDataLineLength;
91
91
  }
92
92
  }
93
- this.fileLintRules.push(file_1.lineEndings);
94
- if (json === null || json === void 0 ? void 0 : json.lineEndings) {
93
+ if ((json === null || json === void 0 ? void 0 : json.lineEndings) && json.lineEndings !== LineEndings_1.LineEndings.OFF) {
95
94
  if (json.lineEndings !== LineEndings_1.LineEndings.LF &&
96
95
  json.lineEndings !== LineEndings_1.LineEndings.CRLF) {
97
96
  throw new Error("Invalid value for lineEndings: can be " + LineEndings_1.LineEndings.LF + " or " + LineEndings_1.LineEndings.CRLF);
98
97
  }
98
+ this.fileLintRules.push(file_1.lineEndings);
99
99
  this.lineEndings = json.lineEndings;
100
100
  }
101
101
  this.lineLintRules.push(line_1.indentationMultiple);
@@ -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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"}