@grexx/grexxlinter 0.2.723 → 0.2.1032

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/cli.js CHANGED
@@ -14943,6 +14943,9 @@ function meetsThreshold(severity, failOn) {
14943
14943
  const floor = failOn === "warning" ? SEVERITY_RANK.warning : SEVERITY_RANK.error;
14944
14944
  return SEVERITY_RANK[severity] >= floor;
14945
14945
  }
14946
+ function messageKey(m) {
14947
+ return `${m.rule}|${m.path}|${m.severity}|${m.message}`;
14948
+ }
14946
14949
  function lintDocument(ctx, input) {
14947
14950
  const settings = normalizeSettings(ctx.settings);
14948
14951
  const casetype = detectCasetype(input);
@@ -15029,7 +15032,7 @@ function lintDocument(ctx, input) {
15029
15032
  }
15030
15033
  const seen = /* @__PURE__ */ new Set();
15031
15034
  const deduped = messages.filter((m) => {
15032
- const k = `${m.rule}|${m.path}|${m.severity}|${m.message}`;
15035
+ const k = messageKey(m);
15033
15036
  if (seen.has(k)) return false;
15034
15037
  seen.add(k);
15035
15038
  return true;
@@ -15061,7 +15064,7 @@ function isLintableYaml(text) {
15061
15064
  // src/cli.ts
15062
15065
  var PARALLEL_THRESHOLD = 200;
15063
15066
  var MAX_WORKERS = 8;
15064
- var VERSION = true ? "0.2.723" : "0.0.0-dev";
15067
+ var VERSION = true ? "0.2.1032" : "0.0.0-dev";
15065
15068
  function isNewer(latest, current) {
15066
15069
  const a = latest.split(".").map(Number);
15067
15070
  const b = current.split(".").map(Number);
package/lsp.js CHANGED
@@ -23901,6 +23901,9 @@ function meetsThreshold(severity, failOn) {
23901
23901
  const floor = failOn === "warning" ? SEVERITY_RANK.warning : SEVERITY_RANK.error;
23902
23902
  return SEVERITY_RANK[severity] >= floor;
23903
23903
  }
23904
+ function messageKey(m) {
23905
+ return `${m.rule}|${m.path}|${m.severity}|${m.message}`;
23906
+ }
23904
23907
  function lintDocument(ctx2, input) {
23905
23908
  const settings2 = normalizeSettings(ctx2.settings);
23906
23909
  const casetype = detectCasetype(input);
@@ -23987,7 +23990,7 @@ function lintDocument(ctx2, input) {
23987
23990
  }
23988
23991
  const seen = /* @__PURE__ */ new Set();
23989
23992
  const deduped = messages.filter((m) => {
23990
- const k = `${m.rule}|${m.path}|${m.severity}|${m.message}`;
23993
+ const k = messageKey(m);
23991
23994
  if (seen.has(k)) return false;
23992
23995
  seen.add(k);
23993
23996
  return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grexx/grexxlinter",
3
- "version": "0.2.723",
3
+ "version": "0.2.1032",
4
4
  "description": "Lint Grexx Studio casetype YAML against the studio JSON Schemas.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9441,6 +9441,198 @@
9441
9441
  }
9442
9442
  }
9443
9443
  },
9444
+ "securityRequirement": {
9445
+ "schema": "securityRequirement.schema.json",
9446
+ "fields": {
9447
+ "passwordLength": {
9448
+ "baseline": "MUST_NOT",
9449
+ "storedAs": "value",
9450
+ "clauses": [
9451
+ {
9452
+ "modality": "MUST",
9453
+ "when": {
9454
+ "op": "cmp",
9455
+ "field": "key",
9456
+ "operator": "==",
9457
+ "value": "passwordLength"
9458
+ },
9459
+ "covered": true,
9460
+ "storedAs": "value"
9461
+ }
9462
+ ]
9463
+ },
9464
+ "passwordComplexity": {
9465
+ "baseline": "MUST_NOT",
9466
+ "storedAs": "value",
9467
+ "clauses": [
9468
+ {
9469
+ "modality": "MUST",
9470
+ "when": {
9471
+ "op": "cmp",
9472
+ "field": "key",
9473
+ "operator": "==",
9474
+ "value": "passwordComplexity"
9475
+ },
9476
+ "covered": true,
9477
+ "storedAs": "value"
9478
+ }
9479
+ ]
9480
+ },
9481
+ "loginMethods": {
9482
+ "baseline": "MUST_NOT",
9483
+ "storedAs": "value",
9484
+ "clauses": [
9485
+ {
9486
+ "modality": "MUST",
9487
+ "when": {
9488
+ "op": "cmp",
9489
+ "field": "key",
9490
+ "operator": "==",
9491
+ "value": "loginMethods"
9492
+ },
9493
+ "covered": true,
9494
+ "storedAs": "value"
9495
+ }
9496
+ ]
9497
+ },
9498
+ "twoFactorAuthentication": {
9499
+ "baseline": "MUST_NOT",
9500
+ "storedAs": "value",
9501
+ "clauses": [
9502
+ {
9503
+ "modality": "MUST",
9504
+ "when": {
9505
+ "op": "cmp",
9506
+ "field": "key",
9507
+ "operator": "==",
9508
+ "value": "twoFactorAuthentication"
9509
+ },
9510
+ "covered": true,
9511
+ "storedAs": "value"
9512
+ }
9513
+ ]
9514
+ },
9515
+ "twoFactorAuthenticationAllowedMethods": {
9516
+ "baseline": "MUST_NOT",
9517
+ "storedAs": "value",
9518
+ "clauses": [
9519
+ {
9520
+ "modality": "MUST",
9521
+ "when": {
9522
+ "op": "cmp",
9523
+ "field": "key",
9524
+ "operator": "==",
9525
+ "value": "twoFactorAuthentication-methods"
9526
+ },
9527
+ "covered": true,
9528
+ "storedAs": "value"
9529
+ }
9530
+ ]
9531
+ },
9532
+ "maximumPasswordAgeDays": {
9533
+ "baseline": "MUST_NOT",
9534
+ "storedAs": "value",
9535
+ "clauses": [
9536
+ {
9537
+ "modality": "MUST",
9538
+ "when": {
9539
+ "op": "cmp",
9540
+ "field": "key",
9541
+ "operator": "==",
9542
+ "value": "passwordAge"
9543
+ },
9544
+ "covered": true,
9545
+ "storedAs": "value"
9546
+ }
9547
+ ]
9548
+ },
9549
+ "passwordMinimalLowercase": {
9550
+ "baseline": "MUST_NOT",
9551
+ "storedAs": "value",
9552
+ "clauses": [
9553
+ {
9554
+ "modality": "MUST",
9555
+ "when": {
9556
+ "op": "cmp",
9557
+ "field": "key",
9558
+ "operator": "==",
9559
+ "value": "passwordMinLowercase"
9560
+ },
9561
+ "covered": true,
9562
+ "storedAs": "value"
9563
+ }
9564
+ ]
9565
+ },
9566
+ "passwordMinimalUppercase": {
9567
+ "baseline": "MUST_NOT",
9568
+ "storedAs": "value",
9569
+ "clauses": [
9570
+ {
9571
+ "modality": "MUST",
9572
+ "when": {
9573
+ "op": "cmp",
9574
+ "field": "key",
9575
+ "operator": "==",
9576
+ "value": "passwordMinUppercase"
9577
+ },
9578
+ "covered": true,
9579
+ "storedAs": "value"
9580
+ }
9581
+ ]
9582
+ },
9583
+ "passwordMinimalSpecialCharacters": {
9584
+ "baseline": "MUST_NOT",
9585
+ "storedAs": "value",
9586
+ "clauses": [
9587
+ {
9588
+ "modality": "MUST",
9589
+ "when": {
9590
+ "op": "cmp",
9591
+ "field": "key",
9592
+ "operator": "==",
9593
+ "value": "passwordMinSpecial"
9594
+ },
9595
+ "covered": true,
9596
+ "storedAs": "value"
9597
+ }
9598
+ ]
9599
+ },
9600
+ "passwordMinimalNumbers": {
9601
+ "baseline": "MUST_NOT",
9602
+ "storedAs": "value",
9603
+ "clauses": [
9604
+ {
9605
+ "modality": "MUST",
9606
+ "when": {
9607
+ "op": "cmp",
9608
+ "field": "key",
9609
+ "operator": "==",
9610
+ "value": "passwordMinNumber"
9611
+ },
9612
+ "covered": true,
9613
+ "storedAs": "value"
9614
+ }
9615
+ ]
9616
+ },
9617
+ "passwordMaximumSequentialCharacters": {
9618
+ "baseline": "MUST_NOT",
9619
+ "storedAs": "value",
9620
+ "clauses": [
9621
+ {
9622
+ "modality": "MUST",
9623
+ "when": {
9624
+ "op": "cmp",
9625
+ "field": "key",
9626
+ "operator": "==",
9627
+ "value": "passwordMaxSequential"
9628
+ },
9629
+ "covered": true,
9630
+ "storedAs": "value"
9631
+ }
9632
+ ]
9633
+ }
9634
+ }
9635
+ },
9444
9636
  "simpleCondition": {
9445
9637
  "schema": "simpleCondition.schema.json",
9446
9638
  "fields": {
@@ -64,5 +64,194 @@
64
64
  ],
65
65
  "title": "securityRequirement",
66
66
  "type": "object",
67
+ "allOf": [
68
+ {
69
+ "if": {
70
+ "properties": {
71
+ "key": {
72
+ "const": "passwordLength"
73
+ }
74
+ },
75
+ "required": [
76
+ "key"
77
+ ]
78
+ },
79
+ "then": {
80
+ "required": [
81
+ "value"
82
+ ]
83
+ }
84
+ },
85
+ {
86
+ "if": {
87
+ "properties": {
88
+ "key": {
89
+ "const": "passwordComplexity"
90
+ }
91
+ },
92
+ "required": [
93
+ "key"
94
+ ]
95
+ },
96
+ "then": {
97
+ "required": [
98
+ "value"
99
+ ]
100
+ }
101
+ },
102
+ {
103
+ "if": {
104
+ "properties": {
105
+ "key": {
106
+ "const": "loginMethods"
107
+ }
108
+ },
109
+ "required": [
110
+ "key"
111
+ ]
112
+ },
113
+ "then": {
114
+ "required": [
115
+ "value"
116
+ ]
117
+ }
118
+ },
119
+ {
120
+ "if": {
121
+ "properties": {
122
+ "key": {
123
+ "const": "twoFactorAuthentication"
124
+ }
125
+ },
126
+ "required": [
127
+ "key"
128
+ ]
129
+ },
130
+ "then": {
131
+ "required": [
132
+ "value"
133
+ ]
134
+ }
135
+ },
136
+ {
137
+ "if": {
138
+ "properties": {
139
+ "key": {
140
+ "const": "twoFactorAuthentication-methods"
141
+ }
142
+ },
143
+ "required": [
144
+ "key"
145
+ ]
146
+ },
147
+ "then": {
148
+ "required": [
149
+ "value"
150
+ ]
151
+ }
152
+ },
153
+ {
154
+ "if": {
155
+ "properties": {
156
+ "key": {
157
+ "const": "passwordAge"
158
+ }
159
+ },
160
+ "required": [
161
+ "key"
162
+ ]
163
+ },
164
+ "then": {
165
+ "required": [
166
+ "value"
167
+ ]
168
+ }
169
+ },
170
+ {
171
+ "if": {
172
+ "properties": {
173
+ "key": {
174
+ "const": "passwordMinLowercase"
175
+ }
176
+ },
177
+ "required": [
178
+ "key"
179
+ ]
180
+ },
181
+ "then": {
182
+ "required": [
183
+ "value"
184
+ ]
185
+ }
186
+ },
187
+ {
188
+ "if": {
189
+ "properties": {
190
+ "key": {
191
+ "const": "passwordMinUppercase"
192
+ }
193
+ },
194
+ "required": [
195
+ "key"
196
+ ]
197
+ },
198
+ "then": {
199
+ "required": [
200
+ "value"
201
+ ]
202
+ }
203
+ },
204
+ {
205
+ "if": {
206
+ "properties": {
207
+ "key": {
208
+ "const": "passwordMinSpecial"
209
+ }
210
+ },
211
+ "required": [
212
+ "key"
213
+ ]
214
+ },
215
+ "then": {
216
+ "required": [
217
+ "value"
218
+ ]
219
+ }
220
+ },
221
+ {
222
+ "if": {
223
+ "properties": {
224
+ "key": {
225
+ "const": "passwordMinNumber"
226
+ }
227
+ },
228
+ "required": [
229
+ "key"
230
+ ]
231
+ },
232
+ "then": {
233
+ "required": [
234
+ "value"
235
+ ]
236
+ }
237
+ },
238
+ {
239
+ "if": {
240
+ "properties": {
241
+ "key": {
242
+ "const": "passwordMaxSequential"
243
+ }
244
+ },
245
+ "required": [
246
+ "key"
247
+ ]
248
+ },
249
+ "then": {
250
+ "required": [
251
+ "value"
252
+ ]
253
+ }
254
+ }
255
+ ],
67
256
  "$comment": "Conditionals generated by packages/schemas/scripts/extend.mjs from rules/securityRequirement.json."
68
257
  }