@checkdigit/eslint-plugin 5.0.0-PR.36-3478 → 5.0.0-PR.36-3767

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.
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
 
30
20
  // src/index.ts
@@ -33,14 +23,313 @@ __export(src_exports, {
33
23
  default: () => src_default
34
24
  });
35
25
  module.exports = __toCommonJS(src_exports);
36
- var import_file_path_comment = __toESM(require("./file-path-comment.cjs"), 1);
37
- var import_no_card_numbers = __toESM(require("./no-card-numbers.cjs"), 1);
38
- var import_no_uuid = __toESM(require("./no-uuid.cjs"), 1);
26
+
27
+ // src/file-path-comment.ts
28
+ var file_path_comment_default = {
29
+ meta: {
30
+ type: "suggestion",
31
+ docs: {
32
+ description: "Validate that first line of file is a path to the file",
33
+ url: "https://github.com/checkdigit/eslint-plugin"
34
+ },
35
+ fixable: "code"
36
+ },
37
+ create(context) {
38
+ const firstLine = context.getSourceCode().getLines()[0];
39
+ const expectedPath = context.getFilename().split("src/")[1];
40
+ if (expectedPath === void 0) {
41
+ return {};
42
+ }
43
+ if (!firstLine.startsWith("//")) {
44
+ if (firstLine.startsWith("/*")) {
45
+ context.report({
46
+ loc: {
47
+ start: {
48
+ line: 0,
49
+ column: 0
50
+ },
51
+ end: {
52
+ line: 0,
53
+ column: 1
54
+ }
55
+ },
56
+ message: "first line cannot be a block comment",
57
+ fix(fixer) {
58
+ return fixer.insertTextBeforeRange([0, 0], `// ${expectedPath}
59
+
60
+ `);
61
+ }
62
+ });
63
+ } else {
64
+ context.report({
65
+ loc: {
66
+ start: {
67
+ line: 0,
68
+ column: 0
69
+ },
70
+ end: {
71
+ line: 0,
72
+ column: 1
73
+ }
74
+ },
75
+ message: "first line is not a comment with the file path",
76
+ fix(fixer) {
77
+ return fixer.insertTextBeforeRange([0, 0], `// ${expectedPath}
78
+
79
+ `);
80
+ }
81
+ });
82
+ }
83
+ } else {
84
+ const actualComment = firstLine.split("// ")[1];
85
+ if (expectedPath !== actualComment) {
86
+ context.report({
87
+ loc: {
88
+ start: {
89
+ line: 0,
90
+ column: 0
91
+ },
92
+ end: {
93
+ line: 0,
94
+ column: 1
95
+ }
96
+ },
97
+ message: "first line is a comment but is not a path to the file",
98
+ fix(fixer) {
99
+ return fixer.replaceTextRange([0, firstLine.length], `// ${expectedPath}`);
100
+ }
101
+ });
102
+ }
103
+ }
104
+ return {};
105
+ }
106
+ };
107
+
108
+ // src/no-card-numbers.ts
109
+ var CARD_NUMBER_FOUND = "CARD_NUMBER_FOUND";
110
+ var CARD_NUMBERS_FOUND = "CARD_NUMBERS_FOUND";
111
+ var cardNumberRegex = /\d{15,19}/gmu;
112
+ var allowCardNumbers = [
113
+ "4111111111111111",
114
+ "111111111111111",
115
+ "000000000000000",
116
+ "0000000000000000",
117
+ "00000000000000000",
118
+ "000000000000000000",
119
+ "0000000000000000000"
120
+ ];
121
+ function luhnCheck(cardNumber) {
122
+ return cardNumber.split("").reverse().map((digit) => parseInt(digit, 10)).reduce((previousValue, currentValue, index) => {
123
+ let value = currentValue;
124
+ if (index % 2 === 1) {
125
+ value *= 2;
126
+ if (value > 9) {
127
+ value = value % 10 + 1;
128
+ }
129
+ }
130
+ return previousValue + value;
131
+ }, 0) % 10 === 0;
132
+ }
133
+ function checkForCardNumbers(value, context, node, loc) {
134
+ const matches = value.match(cardNumberRegex);
135
+ if (matches === null) {
136
+ return;
137
+ }
138
+ const cardNumbers = matches.filter(
139
+ (match) => luhnCheck(match) && allowCardNumbers.indexOf(match) === -1 && // any 16-digit number that begins with 0-1 or 7-9 is not a valid card number
140
+ match[0] !== "0" && match[0] !== "1" && match[0] !== "7" && match[0] !== "8" && match[0] !== "9"
141
+ );
142
+ if (cardNumbers.length === 1) {
143
+ if (node !== void 0) {
144
+ context.report({
145
+ messageId: CARD_NUMBER_FOUND,
146
+ data: {
147
+ number: cardNumbers[0]
148
+ },
149
+ node
150
+ });
151
+ } else if (loc !== void 0) {
152
+ context.report({
153
+ messageId: CARD_NUMBER_FOUND,
154
+ data: {
155
+ number: cardNumbers[0]
156
+ },
157
+ loc: {
158
+ start: loc.start,
159
+ end: loc.end
160
+ }
161
+ });
162
+ }
163
+ } else if (cardNumbers.length > 1) {
164
+ if (node !== void 0) {
165
+ context.report({
166
+ messageId: CARD_NUMBERS_FOUND,
167
+ data: {
168
+ numbers: matches.join(", ")
169
+ },
170
+ node
171
+ });
172
+ } else if (loc !== void 0) {
173
+ context.report({
174
+ messageId: CARD_NUMBERS_FOUND,
175
+ data: {
176
+ numbers: matches.join(", ")
177
+ },
178
+ loc: {
179
+ start: loc.start,
180
+ end: loc.end
181
+ }
182
+ });
183
+ }
184
+ }
185
+ }
186
+ var no_card_numbers_default = {
187
+ meta: {
188
+ type: "problem",
189
+ docs: {
190
+ description: "Detects if a luhn passing card number",
191
+ url: "https://github.com/checkdigit/eslint-plugin"
192
+ },
193
+ messages: {
194
+ [CARD_NUMBER_FOUND]: `Valid card number: "{{ number }}"`,
195
+ [CARD_NUMBERS_FOUND]: `Multiple valid card numbers found: "{{ numbers }}"`
196
+ }
197
+ },
198
+ create(context) {
199
+ const sourceCode = context.getSourceCode();
200
+ const comments = sourceCode.getAllComments();
201
+ comments.forEach((comment) => {
202
+ if (comment.loc !== void 0 && comment.loc !== null) {
203
+ checkForCardNumbers(comment.value, context, void 0, comment.loc);
204
+ }
205
+ });
206
+ return {
207
+ Literal(node) {
208
+ if (node.value === void 0) {
209
+ return;
210
+ }
211
+ if (typeof node.value !== "string" && typeof node.value !== "number") {
212
+ return;
213
+ }
214
+ const value = `${node.value}`;
215
+ checkForCardNumbers(value, context, node);
216
+ },
217
+ TemplateElement(node) {
218
+ if (!node.value) {
219
+ return;
220
+ }
221
+ if (typeof node.value.cooked !== "string") {
222
+ return;
223
+ }
224
+ checkForCardNumbers(node.value.cooked, context, node);
225
+ }
226
+ };
227
+ }
228
+ };
229
+
230
+ // src/no-uuid.ts
231
+ var UUID_FOUND = "UUID_FOUND";
232
+ var UUIDS_FOUND = "UUIDS_FOUND";
233
+ var uuidRegex = /[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/gmu;
234
+ function checkForUuid(value, context, node, loc) {
235
+ const matches = value.match(uuidRegex);
236
+ if (matches === null) {
237
+ return;
238
+ }
239
+ if (matches.length === 1) {
240
+ if (node !== void 0) {
241
+ context.report({
242
+ messageId: UUID_FOUND,
243
+ data: {
244
+ uuid: matches[0] ?? ""
245
+ },
246
+ node
247
+ });
248
+ } else if (loc !== void 0) {
249
+ context.report({
250
+ messageId: UUID_FOUND,
251
+ data: {
252
+ uuid: matches[0] ?? ""
253
+ },
254
+ loc: {
255
+ start: loc.start,
256
+ end: loc.end
257
+ }
258
+ });
259
+ }
260
+ } else if (matches.length > 1) {
261
+ if (node !== void 0) {
262
+ context.report({
263
+ messageId: UUIDS_FOUND,
264
+ data: {
265
+ uuids: matches.join(", ")
266
+ },
267
+ node
268
+ });
269
+ } else if (loc !== void 0) {
270
+ context.report({
271
+ messageId: UUIDS_FOUND,
272
+ data: {
273
+ uuids: matches.join(", ")
274
+ },
275
+ loc: {
276
+ start: loc.start,
277
+ end: loc.end
278
+ }
279
+ });
280
+ }
281
+ }
282
+ }
283
+ var no_uuid_default = {
284
+ meta: {
285
+ type: "problem",
286
+ docs: {
287
+ description: "Detects if a string literal contains a UUID",
288
+ url: "https://github.com/checkdigit/eslint-plugin"
289
+ },
290
+ messages: {
291
+ [UUID_FOUND]: `UUID found: "{{ uuid }}"`,
292
+ [UUIDS_FOUND]: `Multiple UUIDs found: "{{ uuids }}"`
293
+ }
294
+ },
295
+ create(context) {
296
+ const sourceCode = context.getSourceCode();
297
+ const comments = sourceCode.getAllComments();
298
+ comments.forEach((comment) => {
299
+ if (comment.loc !== void 0 && comment.loc !== null) {
300
+ checkForUuid(comment.value, context, void 0, comment.loc);
301
+ }
302
+ });
303
+ return {
304
+ Literal(node) {
305
+ if (node.value === void 0) {
306
+ return;
307
+ }
308
+ if (typeof node.value !== "string") {
309
+ return;
310
+ }
311
+ const value = `${node.value}`;
312
+ checkForUuid(value, context, node);
313
+ },
314
+ TemplateElement(node) {
315
+ if (!node.value) {
316
+ return;
317
+ }
318
+ if (typeof node.value.cooked !== "string") {
319
+ return;
320
+ }
321
+ checkForUuid(node.value.cooked, context, node);
322
+ }
323
+ };
324
+ }
325
+ };
326
+
327
+ // src/index.ts
39
328
  var src_default = {
40
329
  rules: {
41
- "file-path-comment": import_file_path_comment.default,
42
- "no-card-numbers": import_no_card_numbers.default,
43
- "no-uuid": import_no_uuid.default
330
+ "file-path-comment": file_path_comment_default,
331
+ "no-card-numbers": no_card_numbers_default,
332
+ "no-uuid": no_uuid_default
44
333
  },
45
334
  configs: {
46
335
  all: {
@@ -59,4 +348,5 @@ var src_default = {
59
348
  }
60
349
  }
61
350
  };
62
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLCtCQUE0QjtBQUM1Qiw2QkFBMEI7QUFDMUIscUJBQW1CO0FBRW5CLElBQU8sY0FBUTtBQUFBLEVBQ2IsT0FBTztBQUFBLElBQ0wscUJBQXFCLHlCQUFBQTtBQUFBLElBQ3JCLG1CQUFtQix1QkFBQUM7QUFBQSxJQUNuQixXQUFXLGVBQUFDO0FBQUEsRUFDYjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsS0FBSztBQUFBLE1BQ0gsT0FBTztBQUFBLFFBQ0wsK0JBQStCO0FBQUEsUUFDL0IsaUNBQWlDO0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxNQUN6QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbImZpbGVQYXRoQ29tbWVudCIsICJub0NhcmROdW1iZXJzIiwgIm5vVXVpZCJdCn0K
351
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9maWxlLXBhdGgtY29tbWVudC50cyIsICIuLi9zcmMvbm8tY2FyZC1udW1iZXJzLnRzIiwgIi4uL3NyYy9uby11dWlkLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNVQSxJQUFPLDRCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sWUFBWSxRQUFRLGNBQWMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN0RCxVQUFNLGVBQWUsUUFBUSxZQUFZLEVBQUUsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUUxRCxRQUFJLGlCQUFpQixRQUFXO0FBQzlCLGFBQU8sQ0FBQztBQUFBLElBQ1Y7QUFFQSxRQUFJLENBQUMsVUFBVSxXQUFXLElBQUksR0FBRztBQUMvQixVQUFJLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDOUIsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxPQUFPO0FBQ0wsZ0JBQVEsT0FBTztBQUFBLFVBQ2IsS0FBSztBQUFBLFlBQ0gsT0FBTztBQUFBLGNBQ0wsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxZQUNBLEtBQUs7QUFBQSxjQUNILE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUFBLFVBQ1QsSUFBSSxPQUF1QjtBQUN6QixtQkFBTyxNQUFNLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sWUFBWTtBQUFBO0FBQUEsQ0FBTTtBQUFBLFVBQ3JFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sZ0JBQWdCLFVBQVUsTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUM5QyxVQUFJLGlCQUFpQixlQUFlO0FBQ2xDLGdCQUFRLE9BQU87QUFBQSxVQUNiLEtBQUs7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsWUFDQSxLQUFLO0FBQUEsY0FDSCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFVBQ0Y7QUFBQSxVQUNBLFNBQVM7QUFBQSxVQUNULElBQUksT0FBdUI7QUFDekIsbUJBQU8sTUFBTSxpQkFBaUIsQ0FBQyxHQUFHLFVBQVUsTUFBTSxHQUFHLE1BQU0sWUFBWSxFQUFFO0FBQUEsVUFDM0U7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUVBLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFDRjs7O0FDNUVBLElBQU0sb0JBQW9CO0FBQzFCLElBQU0scUJBQXFCO0FBQzNCLElBQU0sa0JBQWtCO0FBQ3hCLElBQU0sbUJBQW1CO0FBQUEsRUFDdkI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUVBLFNBQVMsVUFBVSxZQUFvQjtBQUNyQyxTQUNFLFdBQ0csTUFBTSxFQUFFLEVBQ1IsUUFBUSxFQUNSLElBQUksQ0FBQyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUMsRUFDbEMsT0FBTyxDQUFDLGVBQWUsY0FBYyxVQUFVO0FBQzlDLFFBQUksUUFBUTtBQUNaLFFBQUksUUFBUSxNQUFNLEdBQUc7QUFDbkIsZUFBUztBQUVULFVBQUksUUFBUSxHQUFHO0FBQ2IsZ0JBQVMsUUFBUSxLQUFNO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQ0EsV0FBTyxnQkFBZ0I7QUFBQSxFQUN6QixHQUFHLENBQUMsSUFDSixPQUNGO0FBRUo7QUFFQSxTQUFTLG9CQUFvQixPQUFlLFNBQTJCLE1BQWEsS0FBc0I7QUFDeEcsUUFBTSxVQUFVLE1BQU0sTUFBTSxlQUFlO0FBQzNDLE1BQUksWUFBWSxNQUFNO0FBQ3BCO0FBQUEsRUFDRjtBQUNBLFFBQU0sY0FBYyxRQUFRO0FBQUEsSUFDMUIsQ0FBQyxVQUNDLFVBQVUsS0FBSyxLQUNmLGlCQUFpQixRQUFRLEtBQUssTUFBTTtBQUFBLElBRXBDLE1BQU0sQ0FBQyxNQUFNLE9BQ2IsTUFBTSxDQUFDLE1BQU0sT0FDYixNQUFNLENBQUMsTUFBTSxPQUNiLE1BQU0sQ0FBQyxNQUFNLE9BQ2IsTUFBTSxDQUFDLE1BQU07QUFBQSxFQUNqQjtBQUNBLE1BQUksWUFBWSxXQUFXLEdBQUc7QUFDNUIsUUFBSSxTQUFTLFFBQVc7QUFDdEIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixRQUFRLFlBQVksQ0FBQztBQUFBLFFBQ3ZCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixRQUFRLFlBQVksQ0FBQztBQUFBLFFBQ3ZCO0FBQUEsUUFDQSxLQUFLO0FBQUEsVUFDSCxPQUFPLElBQUk7QUFBQSxVQUNYLEtBQUssSUFBSTtBQUFBLFFBQ1g7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRixXQUFXLFlBQVksU0FBUyxHQUFHO0FBQ2pDLFFBQUksU0FBUyxRQUFXO0FBQ3RCLGNBQVEsT0FBTztBQUFBLFFBQ2IsV0FBVztBQUFBLFFBQ1gsTUFBTTtBQUFBLFVBQ0osU0FBUyxRQUFRLEtBQUssSUFBSTtBQUFBLFFBQzVCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixTQUFTLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDNUI7QUFBQSxRQUNBLEtBQUs7QUFBQSxVQUNILE9BQU8sSUFBSTtBQUFBLFVBQ1gsS0FBSyxJQUFJO0FBQUEsUUFDWDtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFPLDBCQUFRO0FBQUEsRUFDYixNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsTUFDYixLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxpQkFBaUIsR0FBRztBQUFBLE1BQ3JCLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRLGNBQWM7QUFDekMsVUFBTSxXQUFXLFdBQVcsZUFBZTtBQUUzQyxhQUFTLFFBQVEsQ0FBQyxZQUFZO0FBQzVCLFVBQUksUUFBUSxRQUFRLFVBQWEsUUFBUSxRQUFRLE1BQU07QUFDckQsNEJBQW9CLFFBQVEsT0FBTyxTQUFTLFFBQVcsUUFBUSxHQUFHO0FBQUEsTUFDcEU7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPO0FBQUEsTUFDTCxRQUFRLE1BQU07QUFDWixZQUFJLEtBQUssVUFBVSxRQUFXO0FBQzVCO0FBQUEsUUFDRjtBQUNBLFlBQUksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLEtBQUssVUFBVSxVQUFVO0FBQ3BFO0FBQUEsUUFDRjtBQUNBLGNBQU0sUUFBUSxHQUFHLEtBQUssS0FBSztBQUMzQiw0QkFBb0IsT0FBTyxTQUFTLElBQUk7QUFBQSxNQUMxQztBQUFBLE1BQ0EsZ0JBQWdCLE1BQU07QUFDcEIsWUFBSSxDQUFDLEtBQUssT0FBTztBQUNmO0FBQUEsUUFDRjtBQUNBLFlBQUksT0FBTyxLQUFLLE1BQU0sV0FBVyxVQUFVO0FBQ3pDO0FBQUEsUUFDRjtBQUNBLDRCQUFvQixLQUFLLE1BQU0sUUFBUSxTQUFTLElBQUk7QUFBQSxNQUN0RDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7OztBQzNJQSxJQUFNLGFBQWE7QUFDbkIsSUFBTSxjQUFjO0FBQ3BCLElBQU0sWUFBWTtBQUVsQixTQUFTLGFBQWEsT0FBZSxTQUEyQixNQUFhLEtBQXNCO0FBQ2pHLFFBQU0sVUFBVSxNQUFNLE1BQU0sU0FBUztBQUNyQyxNQUFJLFlBQVksTUFBTTtBQUNwQjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3hCLFFBQUksU0FBUyxRQUFXO0FBQ3RCLGNBQVEsT0FBTztBQUFBLFFBQ2IsV0FBVztBQUFBLFFBQ1gsTUFBTTtBQUFBLFVBQ0osTUFBTSxRQUFRLENBQUMsS0FBSztBQUFBLFFBQ3RCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixNQUFNLFFBQVEsQ0FBQyxLQUFLO0FBQUEsUUFDdEI7QUFBQSxRQUNBLEtBQUs7QUFBQSxVQUNILE9BQU8sSUFBSTtBQUFBLFVBQ1gsS0FBSyxJQUFJO0FBQUEsUUFDWDtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLFdBQVcsUUFBUSxTQUFTLEdBQUc7QUFDN0IsUUFBSSxTQUFTLFFBQVc7QUFDdEIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixPQUFPLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDMUI7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxXQUFXLFFBQVEsUUFBVztBQUM1QixjQUFRLE9BQU87QUFBQSxRQUNiLFdBQVc7QUFBQSxRQUNYLE1BQU07QUFBQSxVQUNKLE9BQU8sUUFBUSxLQUFLLElBQUk7QUFBQSxRQUMxQjtBQUFBLFFBQ0EsS0FBSztBQUFBLFVBQ0gsT0FBTyxJQUFJO0FBQUEsVUFDWCxLQUFLLElBQUk7QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU8sa0JBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLE1BQ2QsQ0FBQyxXQUFXLEdBQUc7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRLGNBQWM7QUFDekMsVUFBTSxXQUFXLFdBQVcsZUFBZTtBQUUzQyxhQUFTLFFBQVEsQ0FBQyxZQUFZO0FBQzVCLFVBQUksUUFBUSxRQUFRLFVBQWEsUUFBUSxRQUFRLE1BQU07QUFDckQscUJBQWEsUUFBUSxPQUFPLFNBQVMsUUFBVyxRQUFRLEdBQUc7QUFBQSxNQUM3RDtBQUFBLElBQ0YsQ0FBQztBQUNELFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLFlBQUksS0FBSyxVQUFVLFFBQVc7QUFDNUI7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLEtBQUssVUFBVSxVQUFVO0FBQ2xDO0FBQUEsUUFDRjtBQUNBLGNBQU0sUUFBUSxHQUFHLEtBQUssS0FBSztBQUMzQixxQkFBYSxPQUFPLFNBQVMsSUFBSTtBQUFBLE1BQ25DO0FBQUEsTUFDQSxnQkFBZ0IsTUFBTTtBQUNwQixZQUFJLENBQUMsS0FBSyxPQUFPO0FBQ2Y7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLEtBQUssTUFBTSxXQUFXLFVBQVU7QUFDekM7QUFBQSxRQUNGO0FBQ0EscUJBQWEsS0FBSyxNQUFNLFFBQVEsU0FBUyxJQUFJO0FBQUEsTUFDL0M7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOzs7QUhoR0EsSUFBTyxjQUFRO0FBQUEsRUFDYixPQUFPO0FBQUEsSUFDTCxxQkFBcUI7QUFBQSxJQUNyQixtQkFBbUI7QUFBQSxJQUNuQixXQUFXO0FBQUEsRUFDYjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsS0FBSztBQUFBLE1BQ0gsT0FBTztBQUFBLFFBQ0wsK0JBQStCO0FBQUEsUUFDL0IsaUNBQWlDO0FBQUEsUUFDakMsdUJBQXVCO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQUEsSUFDQSxhQUFhO0FBQUEsTUFDWCxPQUFPO0FBQUEsUUFDTCwrQkFBK0I7QUFBQSxRQUMvQixpQ0FBaUM7QUFBQSxRQUNqQyx1QkFBdUI7QUFBQSxNQUN6QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
352
+ module.exports = module.exports.default;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@checkdigit/eslint-plugin","version":"5.0.0-PR.36-3478","description":"Check Digit eslint plugins","prettier":"@checkdigit/prettier-config","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.js","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"type":"module","sideEffects":false,"keywords":["eslint","eslintplugin"],"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/eslint-plugin.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"homepage":"https://github.com/checkdigit/eslint-plugin#readme","peerDependencies":{"eslint":">=8"},"devDependencies":{"@checkdigit/jest-config":"^2.3.0","@checkdigit/prettier-config":"4.0.0-PR.23-11e4","@checkdigit/typescript-config":"4.0.0-PR.38-ff3c","@types/eslint":"^8.40.2","@typescript-eslint/eslint-plugin":"^5.60.1","@typescript-eslint/parser":"^5.60.1","eslint-config-prettier":"^8.8.0","eslint-plugin-deprecate":"^0.7.0","eslint-plugin-eslint-plugin":"^5.1.0","eslint-plugin-import":"^2.27.5","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^0.8.9","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^0.19.0"},"scripts":{"prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-esm","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --outDir=dist-cjs && echo \"const index = require(\"./index.cjs\");\\nmodule.exports = index.default ?? index;\" > dist-cjs/index.js","build:dist-esm":"rimraf dist-esm && npx builder --type=module --sourceMap --outDir=dist-mjs","lint:fix":"eslint -f unix --ext .ts src --fix","lint":"eslint -f unix --ext .ts src","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","ci:compile":"tsc --noEmit","ci:test":"jest --coverage=false","ci:coverage":"jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier"},"jest":{"preset":"@checkdigit/jest-config"},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"]}
1
+ {"name":"@checkdigit/eslint-plugin","version":"5.0.0-PR.36-3767","description":"Check Digit eslint plugins","prettier":"@checkdigit/prettier-config","exports":{".":{"types":"./dist-types/index.d.ts","require":"./dist-cjs/index.cjs","import":"./dist-mjs/index.mjs","default":"./dist-mjs/index.mjs"}},"keywords":["eslint","eslintplugin"],"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/checkdigit/eslint-plugin.git"},"author":"Check Digit, LLC","license":"MIT","bugs":{"url":"https://github.com/checkdigit/eslint-plugin/issues"},"homepage":"https://github.com/checkdigit/eslint-plugin#readme","peerDependencies":{"eslint":">=8"},"devDependencies":{"@checkdigit/jest-config":"^2.3.0","@checkdigit/prettier-config":"^4.0.0","@checkdigit/typescript-config":"^4.0.0","@types/eslint":"^8.40.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint-config-prettier":"^8.8.0","eslint-plugin-deprecate":"^0.8.0","eslint-plugin-eslint-plugin":"^5.1.0","eslint-plugin-import":"^2.27.5","eslint-plugin-no-only-tests":"^3.1.0","eslint-plugin-no-secrets":"^0.8.9","eslint-plugin-node":"^11.1.0","eslint-plugin-sonarjs":"^0.19.0"},"scripts":{"prepublishOnly":"npm run build:dist-types && npm run build:dist-cjs && npm run build:dist-esm","build:dist-types":"rimraf dist-types && npx builder --type=types --outDir=dist-types","build:dist-cjs":"rimraf dist-cjs && npx builder --type=commonjs --sourceMap --entryPoint=index.ts --outDir=dist-cjs --outFile=index.cjs && echo \"module.exports = module.exports.default;\" >> dist-cjs/index.cjs","build:dist-esm":"rimraf dist-esm && npx builder --type=module --sourceMap --outDir=dist-mjs","lint:fix":"eslint -f unix --ext .ts src --fix","lint":"eslint -f unix --ext .ts src","prettier":"prettier --ignore-path .gitignore --list-different .","prettier:fix":"prettier --ignore-path .gitignore --write .","test":"npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style","ci:compile":"tsc --noEmit","ci:test":"jest --coverage=false","ci:coverage":"jest --coverage=true","ci:lint":"npm run lint","ci:style":"npm run prettier"},"jest":{"preset":"@checkdigit/jest-config"},"files":["src","dist-types","dist-cjs","dist-mjs","!src/**/*.test.ts","!src/**/*.spec.ts","!dist-types/**/*.test.d.ts","!dist-types/**/*.spec.d.ts","!dist-cjs/**/*.test.cjs","!dist-cjs/**/*.spec.cjs","!dist-mjs/**/*.test.mjs","!dist-mjs/**/*.spec.mjs","SECURITY.md"]}
@@ -58,7 +58,7 @@ function checkForCardNumbers(value: string, context: Rule.RuleContext, node?: No
58
58
  match[0] !== '1' &&
59
59
  match[0] !== '7' &&
60
60
  match[0] !== '8' &&
61
- match[0] !== '9'
61
+ match[0] !== '9',
62
62
  );
63
63
  if (cardNumbers.length === 1) {
64
64
  if (node !== undefined) {
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/file-path-comment.ts
21
- var file_path_comment_exports = {};
22
- __export(file_path_comment_exports, {
23
- default: () => file_path_comment_default
24
- });
25
- module.exports = __toCommonJS(file_path_comment_exports);
26
- var file_path_comment_default = {
27
- meta: {
28
- type: "suggestion",
29
- docs: {
30
- description: "Validate that first line of file is a path to the file",
31
- url: "https://github.com/checkdigit/eslint-plugin"
32
- },
33
- fixable: "code"
34
- },
35
- create(context) {
36
- const firstLine = context.getSourceCode().getLines()[0];
37
- const expectedPath = context.getFilename().split("src/")[1];
38
- if (expectedPath === void 0) {
39
- return {};
40
- }
41
- if (!firstLine.startsWith("//")) {
42
- if (firstLine.startsWith("/*")) {
43
- context.report({
44
- loc: {
45
- start: {
46
- line: 0,
47
- column: 0
48
- },
49
- end: {
50
- line: 0,
51
- column: 1
52
- }
53
- },
54
- message: "first line cannot be a block comment",
55
- fix(fixer) {
56
- return fixer.insertTextBeforeRange([0, 0], `// ${expectedPath}
57
-
58
- `);
59
- }
60
- });
61
- } else {
62
- context.report({
63
- loc: {
64
- start: {
65
- line: 0,
66
- column: 0
67
- },
68
- end: {
69
- line: 0,
70
- column: 1
71
- }
72
- },
73
- message: "first line is not a comment with the file path",
74
- fix(fixer) {
75
- return fixer.insertTextBeforeRange([0, 0], `// ${expectedPath}
76
-
77
- `);
78
- }
79
- });
80
- }
81
- } else {
82
- const actualComment = firstLine.split("// ")[1];
83
- if (expectedPath !== actualComment) {
84
- context.report({
85
- loc: {
86
- start: {
87
- line: 0,
88
- column: 0
89
- },
90
- end: {
91
- line: 0,
92
- column: 1
93
- }
94
- },
95
- message: "first line is a comment but is not a path to the file",
96
- fix(fixer) {
97
- return fixer.replaceTextRange([0, firstLine.length], `// ${expectedPath}`);
98
- }
99
- });
100
- }
101
- }
102
- return {};
103
- }
104
- };
105
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2ZpbGUtcGF0aC1jb21tZW50LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsSUFBTyw0QkFBUTtBQUFBLEVBQ2IsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLE1BQ2IsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLFNBQVM7QUFBQSxFQUNYO0FBQUEsRUFDQSxPQUFPLFNBQVM7QUFDZCxVQUFNLFlBQVksUUFBUSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDdEQsVUFBTSxlQUFlLFFBQVEsWUFBWSxFQUFFLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFFMUQsUUFBSSxpQkFBaUIsUUFBVztBQUM5QixhQUFPLENBQUM7QUFBQSxJQUNWO0FBRUEsUUFBSSxDQUFDLFVBQVUsV0FBVyxJQUFJLEdBQUc7QUFDL0IsVUFBSSxVQUFVLFdBQVcsSUFBSSxHQUFHO0FBQzlCLGdCQUFRLE9BQU87QUFBQSxVQUNiLEtBQUs7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsWUFDQSxLQUFLO0FBQUEsY0FDSCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFVBQ0Y7QUFBQSxVQUNBLFNBQVM7QUFBQSxVQUNULElBQUksT0FBdUI7QUFDekIsbUJBQU8sTUFBTSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLFlBQVk7QUFBQTtBQUFBLENBQU07QUFBQSxVQUNyRTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0gsT0FBTztBQUNMLGdCQUFRLE9BQU87QUFBQSxVQUNiLEtBQUs7QUFBQSxZQUNILE9BQU87QUFBQSxjQUNMLE1BQU07QUFBQSxjQUNOLFFBQVE7QUFBQSxZQUNWO0FBQUEsWUFDQSxLQUFLO0FBQUEsY0FDSCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFVBQ0Y7QUFBQSxVQUNBLFNBQVM7QUFBQSxVQUNULElBQUksT0FBdUI7QUFDekIsbUJBQU8sTUFBTSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLFlBQVk7QUFBQTtBQUFBLENBQU07QUFBQSxVQUNyRTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGLE9BQU87QUFDTCxZQUFNLGdCQUFnQixVQUFVLE1BQU0sS0FBSyxFQUFFLENBQUM7QUFDOUMsVUFBSSxpQkFBaUIsZUFBZTtBQUNsQyxnQkFBUSxPQUFPO0FBQUEsVUFDYixLQUFLO0FBQUEsWUFDSCxPQUFPO0FBQUEsY0FDTCxNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsWUFDVjtBQUFBLFlBQ0EsS0FBSztBQUFBLGNBQ0gsTUFBTTtBQUFBLGNBQ04sUUFBUTtBQUFBLFlBQ1Y7QUFBQSxVQUNGO0FBQUEsVUFDQSxTQUFTO0FBQUEsVUFDVCxJQUFJLE9BQXVCO0FBQ3pCLG1CQUFPLE1BQU0saUJBQWlCLENBQUMsR0FBRyxVQUFVLE1BQU0sR0FBRyxNQUFNLFlBQVksRUFBRTtBQUFBLFVBQzNFO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFFQSxXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
package/dist-cjs/index.js DELETED
@@ -1,2 +0,0 @@
1
- const index = require(./index.cjs);
2
- module.exports = index.default ?? index;
@@ -1,146 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/no-card-numbers.ts
21
- var no_card_numbers_exports = {};
22
- __export(no_card_numbers_exports, {
23
- default: () => no_card_numbers_default
24
- });
25
- module.exports = __toCommonJS(no_card_numbers_exports);
26
- var CARD_NUMBER_FOUND = "CARD_NUMBER_FOUND";
27
- var CARD_NUMBERS_FOUND = "CARD_NUMBERS_FOUND";
28
- var cardNumberRegex = /\d{15,19}/gmu;
29
- var allowCardNumbers = [
30
- "4111111111111111",
31
- "111111111111111",
32
- "000000000000000",
33
- "0000000000000000",
34
- "00000000000000000",
35
- "000000000000000000",
36
- "0000000000000000000"
37
- ];
38
- function luhnCheck(cardNumber) {
39
- return cardNumber.split("").reverse().map((digit) => parseInt(digit, 10)).reduce((previousValue, currentValue, index) => {
40
- let value = currentValue;
41
- if (index % 2 === 1) {
42
- value *= 2;
43
- if (value > 9) {
44
- value = value % 10 + 1;
45
- }
46
- }
47
- return previousValue + value;
48
- }, 0) % 10 === 0;
49
- }
50
- function checkForCardNumbers(value, context, node, loc) {
51
- const matches = value.match(cardNumberRegex);
52
- if (matches === null) {
53
- return;
54
- }
55
- const cardNumbers = matches.filter(
56
- (match) => luhnCheck(match) && allowCardNumbers.indexOf(match) === -1 && // any 16-digit number that begins with 0-1 or 7-9 is not a valid card number
57
- match[0] !== "0" && match[0] !== "1" && match[0] !== "7" && match[0] !== "8" && match[0] !== "9"
58
- );
59
- if (cardNumbers.length === 1) {
60
- if (node !== void 0) {
61
- context.report({
62
- messageId: CARD_NUMBER_FOUND,
63
- data: {
64
- number: cardNumbers[0]
65
- },
66
- node
67
- });
68
- } else if (loc !== void 0) {
69
- context.report({
70
- messageId: CARD_NUMBER_FOUND,
71
- data: {
72
- number: cardNumbers[0]
73
- },
74
- loc: {
75
- start: loc.start,
76
- end: loc.end
77
- }
78
- });
79
- }
80
- } else if (cardNumbers.length > 1) {
81
- if (node !== void 0) {
82
- context.report({
83
- messageId: CARD_NUMBERS_FOUND,
84
- data: {
85
- numbers: matches.join(", ")
86
- },
87
- node
88
- });
89
- } else if (loc !== void 0) {
90
- context.report({
91
- messageId: CARD_NUMBERS_FOUND,
92
- data: {
93
- numbers: matches.join(", ")
94
- },
95
- loc: {
96
- start: loc.start,
97
- end: loc.end
98
- }
99
- });
100
- }
101
- }
102
- }
103
- var no_card_numbers_default = {
104
- meta: {
105
- type: "problem",
106
- docs: {
107
- description: "Detects if a luhn passing card number",
108
- url: "https://github.com/checkdigit/eslint-plugin"
109
- },
110
- messages: {
111
- [CARD_NUMBER_FOUND]: `Valid card number: "{{ number }}"`,
112
- [CARD_NUMBERS_FOUND]: `Multiple valid card numbers found: "{{ numbers }}"`
113
- }
114
- },
115
- create(context) {
116
- const sourceCode = context.getSourceCode();
117
- const comments = sourceCode.getAllComments();
118
- comments.forEach((comment) => {
119
- if (comment.loc !== void 0 && comment.loc !== null) {
120
- checkForCardNumbers(comment.value, context, void 0, comment.loc);
121
- }
122
- });
123
- return {
124
- Literal(node) {
125
- if (node.value === void 0) {
126
- return;
127
- }
128
- if (typeof node.value !== "string" && typeof node.value !== "number") {
129
- return;
130
- }
131
- const value = `${node.value}`;
132
- checkForCardNumbers(value, context, node);
133
- },
134
- TemplateElement(node) {
135
- if (!node.value) {
136
- return;
137
- }
138
- if (typeof node.value.cooked !== "string") {
139
- return;
140
- }
141
- checkForCardNumbers(node.value.cooked, context, node);
142
- }
143
- };
144
- }
145
- };
146
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLWNhcmQtbnVtYmVycy50cyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLElBQU0sb0JBQW9CO0FBQzFCLElBQU0scUJBQXFCO0FBQzNCLElBQU0sa0JBQWtCO0FBQ3hCLElBQU0sbUJBQW1CO0FBQUEsRUFDdkI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUVBLFNBQVMsVUFBVSxZQUFvQjtBQUNyQyxTQUNFLFdBQ0csTUFBTSxFQUFFLEVBQ1IsUUFBUSxFQUNSLElBQUksQ0FBQyxVQUFVLFNBQVMsT0FBTyxFQUFFLENBQUMsRUFDbEMsT0FBTyxDQUFDLGVBQWUsY0FBYyxVQUFVO0FBQzlDLFFBQUksUUFBUTtBQUNaLFFBQUksUUFBUSxNQUFNLEdBQUc7QUFDbkIsZUFBUztBQUVULFVBQUksUUFBUSxHQUFHO0FBQ2IsZ0JBQVMsUUFBUSxLQUFNO0FBQUEsTUFDekI7QUFBQSxJQUNGO0FBQ0EsV0FBTyxnQkFBZ0I7QUFBQSxFQUN6QixHQUFHLENBQUMsSUFDSixPQUNGO0FBRUo7QUFFQSxTQUFTLG9CQUFvQixPQUFlLFNBQTJCLE1BQWEsS0FBc0I7QUFDeEcsUUFBTSxVQUFVLE1BQU0sTUFBTSxlQUFlO0FBQzNDLE1BQUksWUFBWSxNQUFNO0FBQ3BCO0FBQUEsRUFDRjtBQUNBLFFBQU0sY0FBYyxRQUFRO0FBQUEsSUFDMUIsQ0FBQyxVQUNDLFVBQVUsS0FBSyxLQUNmLGlCQUFpQixRQUFRLEtBQUssTUFBTTtBQUFBLElBRXBDLE1BQU0sQ0FBQyxNQUFNLE9BQ2IsTUFBTSxDQUFDLE1BQU0sT0FDYixNQUFNLENBQUMsTUFBTSxPQUNiLE1BQU0sQ0FBQyxNQUFNLE9BQ2IsTUFBTSxDQUFDLE1BQU07QUFBQSxFQUNqQjtBQUNBLE1BQUksWUFBWSxXQUFXLEdBQUc7QUFDNUIsUUFB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
@@ -1,121 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/no-uuid.ts
21
- var no_uuid_exports = {};
22
- __export(no_uuid_exports, {
23
- default: () => no_uuid_default
24
- });
25
- module.exports = __toCommonJS(no_uuid_exports);
26
- var UUID_FOUND = "UUID_FOUND";
27
- var UUIDS_FOUND = "UUIDS_FOUND";
28
- var uuidRegex = /[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/gmu;
29
- function checkForUuid(value, context, node, loc) {
30
- const matches = value.match(uuidRegex);
31
- if (matches === null) {
32
- return;
33
- }
34
- if (matches.length === 1) {
35
- if (node !== void 0) {
36
- context.report({
37
- messageId: UUID_FOUND,
38
- data: {
39
- uuid: matches[0] ?? ""
40
- },
41
- node
42
- });
43
- } else if (loc !== void 0) {
44
- context.report({
45
- messageId: UUID_FOUND,
46
- data: {
47
- uuid: matches[0] ?? ""
48
- },
49
- loc: {
50
- start: loc.start,
51
- end: loc.end
52
- }
53
- });
54
- }
55
- } else if (matches.length > 1) {
56
- if (node !== void 0) {
57
- context.report({
58
- messageId: UUIDS_FOUND,
59
- data: {
60
- uuids: matches.join(", ")
61
- },
62
- node
63
- });
64
- } else if (loc !== void 0) {
65
- context.report({
66
- messageId: UUIDS_FOUND,
67
- data: {
68
- uuids: matches.join(", ")
69
- },
70
- loc: {
71
- start: loc.start,
72
- end: loc.end
73
- }
74
- });
75
- }
76
- }
77
- }
78
- var no_uuid_default = {
79
- meta: {
80
- type: "problem",
81
- docs: {
82
- description: "Detects if a string literal contains a UUID",
83
- url: "https://github.com/checkdigit/eslint-plugin"
84
- },
85
- messages: {
86
- [UUID_FOUND]: `UUID found: "{{ uuid }}"`,
87
- [UUIDS_FOUND]: `Multiple UUIDs found: "{{ uuids }}"`
88
- }
89
- },
90
- create(context) {
91
- const sourceCode = context.getSourceCode();
92
- const comments = sourceCode.getAllComments();
93
- comments.forEach((comment) => {
94
- if (comment.loc !== void 0 && comment.loc !== null) {
95
- checkForUuid(comment.value, context, void 0, comment.loc);
96
- }
97
- });
98
- return {
99
- Literal(node) {
100
- if (node.value === void 0) {
101
- return;
102
- }
103
- if (typeof node.value !== "string") {
104
- return;
105
- }
106
- const value = `${node.value}`;
107
- checkForUuid(value, context, node);
108
- },
109
- TemplateElement(node) {
110
- if (!node.value) {
111
- return;
112
- }
113
- if (typeof node.value.cooked !== "string") {
114
- return;
115
- }
116
- checkForUuid(node.value.cooked, context, node);
117
- }
118
- };
119
- }
120
- };
121
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25vLXV1aWQudHMiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxJQUFNLGFBQWE7QUFDbkIsSUFBTSxjQUFjO0FBQ3BCLElBQU0sWUFBWTtBQUVsQixTQUFTLGFBQWEsT0FBZSxTQUEyQixNQUFhLEtBQXNCO0FBQ2pHLFFBQU0sVUFBVSxNQUFNLE1BQU0sU0FBUztBQUNyQyxNQUFJLFlBQVksTUFBTTtBQUNwQjtBQUFBLEVBQ0Y7QUFDQSxNQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3hCLFFBQUksU0FBUyxRQUFXO0FBQ3RCLGNBQVEsT0FBTztBQUFBLFFBQ2IsV0FBVztBQUFBLFFBQ1gsTUFBTTtBQUFBLFVBQ0osTUFBTSxRQUFRLENBQUMsS0FBSztBQUFBLFFBQ3RCO0FBQUEsUUFDQTtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0gsV0FBVyxRQUFRLFFBQVc7QUFDNUIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixNQUFNLFFBQVEsQ0FBQyxLQUFLO0FBQUEsUUFDdEI7QUFBQSxRQUNBLEtBQUs7QUFBQSxVQUNILE9BQU8sSUFBSTtBQUFBLFVBQ1gsS0FBSyxJQUFJO0FBQUEsUUFDWDtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGLFdBQVcsUUFBUSxTQUFTLEdBQUc7QUFDN0IsUUFBSSxTQUFTLFFBQVc7QUFDdEIsY0FBUSxPQUFPO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxNQUFNO0FBQUEsVUFDSixPQUFPLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFDMUI7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxXQUFXLFFBQVEsUUFBVztBQUM1QixjQUFRLE9BQU87QUFBQSxRQUNiLFdBQVc7QUFBQSxRQUNYLE1BQU07QUFBQSxVQUNKLE9BQU8sUUFBUSxLQUFLLElBQUk7QUFBQSxRQUMxQjtBQUFBLFFBQ0EsS0FBSztBQUFBLFVBQ0gsT0FBTyxJQUFJO0FBQUEsVUFDWCxLQUFLLElBQUk7QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU8sa0JBQVE7QUFBQSxFQUNiLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxNQUNiLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLE1BQ2QsQ0FBQyxXQUFXLEdBQUc7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE9BQU8sU0FBUztBQUNkLFVBQU0sYUFBYSxRQUFRLGNBQWM7QUFDekMsVUFBTSxXQUFXLFdBQVcsZUFBZTtBQUUzQyxhQUFTLFFBQVEsQ0FBQyxZQUFZO0FBQzVCLFVBQUksUUFBUSxRQUFRLFVBQWEsUUFBUSxRQUFRLE1BQU07QUFDckQscUJBQWEsUUFBUSxPQUFPLFNBQVMsUUFBVyxRQUFRLEdBQUc7QUFBQSxNQUM3RDtBQUFBLElBQ0YsQ0FBQztBQUNELFdBQU87QUFBQSxNQUNMLFFBQVEsTUFBTTtBQUNaLFlBQUksS0FBSyxVQUFVLFFBQVc7QUFDNUI7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLEtBQUssVUFBVSxVQUFVO0FBQ2xDO0FBQUEsUUFDRjtBQUNBLGNBQU0sUUFBUSxHQUFHLEtBQUssS0FBSztBQUMzQixxQkFBYSxPQUFPLFNBQVMsSUFBSTtBQUFBLE1BQ25DO0FBQUEsTUFDQSxnQkFBZ0IsTUFBTTtBQUNwQixZQUFJLENBQUMsS0FBSyxPQUFPO0FBQ2Y7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLEtBQUssTUFBTSxXQUFXLFVBQVU7QUFDekM7QUFBQSxRQUNGO0FBQ0EscUJBQWEsS0FBSyxNQUFNLFFBQVEsU0FBUyxJQUFJO0FBQUEsTUFDL0M7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=