eslint-plugin-chrome-extensions 2.4.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +87 -6
  2. package/package.json +3 -2
  3. package/src/data/apis.js +166 -115
  4. package/src/data/deprecations.js +7 -7
  5. package/src/data/i18n.js +11 -69
  6. package/src/data/manifest.js +61 -57
  7. package/src/data/permissions.js +29 -29
  8. package/src/data/regex.js +10 -0
  9. package/src/index.js +7 -124
  10. package/src/rules/manifest-key-order.js +8 -8
  11. package/src/rules/manifest-spacing.js +5 -5
  12. package/src/rules/no-content-style-leak.js +6 -4
  13. package/src/rules/no-deprecated-apis.js +4 -4
  14. package/src/rules/no-duplicate-manifest-keys.js +3 -4
  15. package/src/rules/no-insecure-messaging.js +4 -4
  16. package/src/rules/no-invalid-permissions.js +10 -11
  17. package/src/rules/no-missing-default-locale.js +7 -9
  18. package/src/rules/no-missing-i18n-keys.js +22 -21
  19. package/src/rules/no-missing-permissions.js +7 -6
  20. package/src/rules/no-missing-web-accessible-resources.js +7 -6
  21. package/src/rules/no-remote-code.js +12 -12
  22. package/src/rules/no-sensitive-permissions.js +75 -0
  23. package/src/rules/no-unrestricted-host-permissions.js +8 -7
  24. package/src/rules/no-unused-i18n-keys.js +11 -10
  25. package/src/rules/no-unused-permissions.js +22 -23
  26. package/src/rules/require-license-file.js +4 -5
  27. package/src/rules/require-mv3.js +4 -5
  28. package/src/rules/require-short-name-when-useful.js +4 -3
  29. package/src/rules/valid-filenames.js +3 -10
  30. package/src/rules/valid-license-file.js +18 -11
  31. package/src/rules/valid-manifest-icons.js +6 -5
  32. package/src/rules/valid-mv3-schema.js +21 -21
  33. package/src/rules/valid-service-worker.js +34 -13
  34. package/src/rules/valid-url-fields.js +10 -7
  35. package/src/rules/valid-version-field.js +4 -8
  36. package/src/utils/extension.js +39 -33
  37. package/src/utils/i18n.js +55 -0
  38. package/src/utils/init.js +105 -0
  39. package/src/utils/license.js +55 -0
  40. package/src/utils/node.js +20 -19
  41. package/src/utils/pkg.js +12 -10
  42. package/src/utils/rules.js +6 -4
  43. package/src/utils/text.js +13 -0
  44. package/src/data/license.js +0 -28
  45. package/src/data/text-parser.js +0 -11
  46. package/src/utils/bundle.js +0 -10
@@ -0,0 +1,13 @@
1
+ export default {
2
+ parser: {
3
+ parse: text => ({
4
+ type: 'Program',
5
+ body: [],
6
+ sourceType: 'module',
7
+ range: [0, text.length],
8
+ loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 0 }},
9
+ tokens: [],
10
+ comments: []
11
+ })
12
+ }
13
+ }
@@ -1,28 +0,0 @@
1
- import fs from 'node:fs'
2
- import path from 'node:path'
3
-
4
- export const re = {
5
- licenseFilename: // e.g. LICENSE.md, LICENSE-MIT, MIT-LICENSE.md, COPYING.LESSER, LICENSE-2.0.txt
6
- // eslint-disable-next-line security/detect-unsafe-regex
7
- /^(?!.*\.(?:[cm]?js|[cm]?ts)x?$)(?:[\w.-]*-)?(?:LICEN[SC]E|COPYING)(?:[-.][\w.-]+)?$/i,
8
- spdxTag: /SPDX-License-Identifier:\s*([\w.+-]+)/i
9
- }
10
-
11
- export const skipDirs = new Set(['node_modules'])
12
-
13
- export function findLicenseFile(root) {
14
- const queue = [root]
15
- while (queue.length) {
16
- const dir = queue.shift(), entries = tryReaddir(dir)
17
- if (!entries) continue
18
- for (const entry of entries) {
19
- if (entry.name.startsWith('.') || skipDirs.has(entry.name)) continue
20
- if (entry.isFile() && re.licenseFilename.test(entry.name)) return path.join(dir, entry.name)
21
- if (entry.isDirectory()) queue.push(path.join(dir, entry.name))
22
- }
23
- }
24
- return null
25
- }
26
-
27
- function tryReaddir(dir) { // eslint-disable-next-line security/detect-non-literal-fs-filename
28
- try { return fs.readdirSync(dir, { withFileTypes: true }) } catch { return null }}
@@ -1,11 +0,0 @@
1
- export const textParser = {
2
- parse: text => ({
3
- type: 'Program',
4
- body: [],
5
- sourceType: 'module',
6
- range: [0, text.length],
7
- loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 0 }},
8
- tokens: [],
9
- comments: []
10
- })
11
- }
@@ -1,10 +0,0 @@
1
- export function initDeprecation(plugin, [ruleId, bundleNames], pluginName) {
2
- for (const bundleName of bundleNames) {
3
- /* eslint-disable security/detect-object-injection */
4
- if (plugin.configs[bundleName])
5
- plugin.configs[bundleName].rules[`${pluginName}/${ruleId}`] = 'error'
6
- /* eslint-enable security/detect-object-injection */
7
- if (process.env.DEBUG_MODE)
8
- console.warn(`[${pluginName}] '${ruleId}' will be removed from '${bundleName}' in a future major release`)
9
- }
10
- }