@alexlit/lint-kit 167.2.0 → 167.4.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 (142) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/LICENSE +21 -0
  3. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/README.md +54 -0
  4. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/base.d.ts +23 -0
  5. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/base.js +25 -0
  6. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/flat/base.d.ts +35 -0
  7. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/flat/base.js +35 -0
  8. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/flat/recommended.d.ts +1194 -0
  9. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/flat/recommended.js +39 -0
  10. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/recommended.d.ts +29 -0
  11. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/configs/recommended.js +29 -0
  12. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/index.d.ts +2532 -0
  13. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/index.js +62 -0
  14. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/key-format-style.d.ts +2 -0
  15. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/key-format-style.js +247 -0
  16. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-component.d.ts +2 -0
  17. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-component.js +85 -0
  18. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-place-attr.d.ts +2 -0
  19. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-place-attr.js +41 -0
  20. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-places-prop.d.ts +2 -0
  21. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-i18n-places-prop.js +36 -0
  22. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-modulo-syntax.d.ts +2 -0
  23. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-modulo-syntax.js +94 -0
  24. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-tc.d.ts +2 -0
  25. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-tc.js +42 -0
  26. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-v-t.d.ts +2 -0
  27. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-deprecated-v-t.js +33 -0
  28. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-duplicate-keys-in-locale.d.ts +2 -0
  29. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-duplicate-keys-in-locale.js +271 -0
  30. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-dynamic-keys.d.ts +2 -0
  31. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-dynamic-keys.js +105 -0
  32. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-html-messages.d.ts +2 -0
  33. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-html-messages.js +137 -0
  34. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-i18n-t-path-prop.d.ts +2 -0
  35. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-i18n-t-path-prop.js +44 -0
  36. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-missing-keys-in-other-locales.d.ts +2 -0
  37. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-missing-keys-in-other-locales.js +264 -0
  38. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-missing-keys.d.ts +2 -0
  39. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-missing-keys.js +111 -0
  40. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-raw-text.d.ts +2 -0
  41. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-raw-text.js +575 -0
  42. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-unknown-locale.d.ts +2 -0
  43. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-unknown-locale.js +198 -0
  44. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-unused-keys.d.ts +2 -0
  45. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-unused-keys.js +456 -0
  46. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-v-html.d.ts +2 -0
  47. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/no-v-html.js +50 -0
  48. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/prefer-linked-key-with-paren.d.ts +2 -0
  49. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/prefer-linked-key-with-paren.js +108 -0
  50. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/prefer-sfc-lang-attr.d.ts +2 -0
  51. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/prefer-sfc-lang-attr.js +58 -0
  52. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/sfc-locale-attr.d.ts +2 -0
  53. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/sfc-locale-attr.js +65 -0
  54. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/valid-message-syntax.d.ts +2 -0
  55. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/rules/valid-message-syntax.js +186 -0
  56. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/eslint.d.ts +216 -0
  57. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/eslint.js +2 -0
  58. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/i18n.d.ts +5 -0
  59. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/i18n.js +2 -0
  60. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/index.d.ts +6 -0
  61. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/index.js +22 -0
  62. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/nodes.d.ts +7 -0
  63. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/nodes.js +2 -0
  64. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/settings.d.ts +8 -0
  65. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/settings.js +2 -0
  66. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/types.d.ts +38 -0
  67. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/types.js +2 -0
  68. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/vue-parser-services.d.ts +32 -0
  69. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/types/vue-parser-services.js +2 -0
  70. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/cache-function.d.ts +2 -0
  71. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/cache-function.js +11 -0
  72. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/cache-loader.d.ts +10 -0
  73. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/cache-loader.js +27 -0
  74. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/casing.d.ts +10 -0
  75. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/casing.js +101 -0
  76. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/collect-keys.d.ts +13 -0
  77. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/collect-keys.js +160 -0
  78. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/collect-linked-keys.d.ts +2 -0
  79. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/collect-linked-keys.js +49 -0
  80. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/compat.d.ts +3 -0
  81. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/compat.js +35 -0
  82. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/default-timeouts.d.ts +6 -0
  83. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/default-timeouts.js +10 -0
  84. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/get-cwd.d.ts +2 -0
  85. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/get-cwd.js +9 -0
  86. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/glob-utils.d.ts +15 -0
  87. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/glob-utils.js +154 -0
  88. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/ignored-paths.d.ts +43 -0
  89. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/ignored-paths.js +234 -0
  90. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/index.d.ts +25 -0
  91. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/index.js +446 -0
  92. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/key-path.d.ts +2 -0
  93. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/key-path.js +27 -0
  94. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/locale-messages.d.ts +54 -0
  95. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/locale-messages.js +187 -0
  96. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/parser-v9.d.ts +8 -0
  97. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/parser-v9.js +40 -0
  98. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/parser.d.ts +5 -0
  99. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/parser.js +18 -0
  100. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/traverser.d.ts +6 -0
  101. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/traverser.js +31 -0
  102. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/utils.d.ts +28 -0
  103. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/message-compiler/utils.js +279 -0
  104. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/build-parser-using-flat-config.d.ts +2 -0
  105. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/build-parser-using-flat-config.js +11 -0
  106. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/build-parser-using-legacy-config.d.ts +2 -0
  107. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/build-parser-using-legacy-config.js +46 -0
  108. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/index.d.ts +4 -0
  109. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/index.js +18 -0
  110. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/parse-by-parser.d.ts +3 -0
  111. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/parse-by-parser.js +42 -0
  112. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/should-use-flat-config.d.ts +2 -0
  113. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/should-use-flat-config.js +54 -0
  114. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/worker.d.ts +1 -0
  115. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parser-config-resolver/worker.js +32 -0
  116. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parsers/index.d.ts +4 -0
  117. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/parsers/index.js +32 -0
  118. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/path-utils.d.ts +2 -0
  119. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/path-utils.js +21 -0
  120. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/regexp.d.ts +1 -0
  121. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/regexp.js +16 -0
  122. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/resource-loader.d.ts +10 -0
  123. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/resource-loader.js +32 -0
  124. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/rule.d.ts +9 -0
  125. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/dist/utils/rule.js +75 -0
  126. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/globals.json +3345 -0
  127. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/index.d.ts +3452 -0
  128. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/index.js +2 -0
  129. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/license +9 -0
  130. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/package.json +117 -0
  131. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/globals/readme.md +42 -0
  132. package/packages/config-eslint/node_modules/@intlify/eslint-plugin-vue-i18n/package.json +147 -0
  133. package/packages/config-eslint/node_modules/vue-eslint-parser/LICENSE +21 -0
  134. package/packages/config-eslint/node_modules/vue-eslint-parser/README.md +332 -0
  135. package/packages/config-eslint/node_modules/vue-eslint-parser/index.d.ts +667 -0
  136. package/packages/config-eslint/node_modules/vue-eslint-parser/index.js +6642 -0
  137. package/packages/config-eslint/node_modules/vue-eslint-parser/index.js.map +1 -0
  138. package/packages/config-eslint/node_modules/vue-eslint-parser/package.json +100 -0
  139. package/packages/config-eslint/package.json +5 -5
  140. package/packages/config-eslint/plugins/unicorn.js +2 -0
  141. package/packages/config-prettier/package.json +3 -3
  142. package/packages/config-stylelint/package.json +3 -3
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocaleMessages = exports.FileLocaleMessage = exports.BlockLocaleMessage = exports.LocaleMessage = void 0;
4
+ const path_1 = require("path");
5
+ const fs_1 = require("fs");
6
+ const parsers_1 = require("./parsers");
7
+ const resource_loader_1 = require("./resource-loader");
8
+ const json5_1 = require("json5");
9
+ const js_yaml_1 = require("js-yaml");
10
+ const key_path_1 = require("./key-path");
11
+ const DEFAULT_LOCALE_PATTERN = '[A-Za-z0-9-_]+';
12
+ const DEFAULT_LOCALE_FIELNAME_REGEX = new RegExp(`(${DEFAULT_LOCALE_PATTERN})\.`, 'i');
13
+ const DEFAULT_LOCALE_CAPTURE_REGEX = new RegExp(`^.*\/(?<locale>${DEFAULT_LOCALE_PATTERN})\.(json5?|ya?ml)$`, 'i');
14
+ class LocaleMessage {
15
+ constructor({ fullpath, locales, localeKey, localePattern }) {
16
+ this.fullpath = fullpath;
17
+ this.localeKey = localeKey;
18
+ this.file = fullpath.replace(/^.*(\\|\/|:)/, '');
19
+ this.localePattern = this.getLocalePatternWithRegex(localePattern);
20
+ this._locales = locales;
21
+ }
22
+ getLocalePatternWithRegex(localePattern) {
23
+ return localePattern != null
24
+ ? typeof localePattern === 'string'
25
+ ? new RegExp(localePattern, 'i')
26
+ : Object.prototype.toString.call(localePattern) === '[object RegExp]'
27
+ ? localePattern
28
+ : DEFAULT_LOCALE_CAPTURE_REGEX
29
+ : DEFAULT_LOCALE_CAPTURE_REGEX;
30
+ }
31
+ get messages() {
32
+ return this.getMessagesInternal();
33
+ }
34
+ get locales() {
35
+ var _a;
36
+ if (this._locales) {
37
+ return this._locales;
38
+ }
39
+ if (this.localeKey === 'file') {
40
+ const matched = this.file.match(DEFAULT_LOCALE_FIELNAME_REGEX);
41
+ return (this._locales = [(matched && matched[1]) || this.file]);
42
+ }
43
+ else if (this.localeKey === 'path') {
44
+ const matched = this.fullpath.match(this.localePattern);
45
+ return (this._locales = [
46
+ (matched && ((_a = matched.groups) === null || _a === void 0 ? void 0 : _a.locale)) || this.fullpath
47
+ ]);
48
+ }
49
+ else if (this.localeKey === 'key') {
50
+ return (this._locales = Object.keys(this.messages));
51
+ }
52
+ return (this._locales = []);
53
+ }
54
+ isResolvedLocaleByFileName() {
55
+ return this.localeKey === 'file' || this.localeKey === 'path';
56
+ }
57
+ getMessagesFromLocale(locale) {
58
+ if (this.isResolvedLocaleByFileName()) {
59
+ if (!this.locales.includes(locale)) {
60
+ return {};
61
+ }
62
+ return this.messages;
63
+ }
64
+ if (this.localeKey === 'key') {
65
+ return (this.messages[locale] || {});
66
+ }
67
+ return {};
68
+ }
69
+ }
70
+ exports.LocaleMessage = LocaleMessage;
71
+ class BlockLocaleMessage extends LocaleMessage {
72
+ constructor({ block, fullpath, locales, localeKey, lang = 'json' }) {
73
+ super({
74
+ fullpath,
75
+ locales,
76
+ localeKey
77
+ });
78
+ this._messages = null;
79
+ this.block = block;
80
+ this.lang = lang || 'json';
81
+ }
82
+ getMessagesInternal() {
83
+ if (this._messages) {
84
+ return this._messages;
85
+ }
86
+ const { lang } = this;
87
+ if (lang === 'json' || lang === 'json5') {
88
+ this._messages = (0, parsers_1.parseJsonValuesInI18nBlock)(this.block) || {};
89
+ }
90
+ else if (lang === 'yaml' || lang === 'yml') {
91
+ this._messages = (0, parsers_1.parseYamlValuesInI18nBlock)(this.block) || {};
92
+ }
93
+ else {
94
+ this._messages = {};
95
+ }
96
+ return this._messages;
97
+ }
98
+ }
99
+ exports.BlockLocaleMessage = BlockLocaleMessage;
100
+ class FileLocaleMessage extends LocaleMessage {
101
+ constructor({ fullpath, locales, localeKey, localePattern }) {
102
+ super({
103
+ fullpath,
104
+ locales,
105
+ localeKey,
106
+ localePattern
107
+ });
108
+ this._resource = new resource_loader_1.ResourceLoader(fullpath, fileName => {
109
+ const ext = (0, path_1.extname)(fileName).toLowerCase();
110
+ if (ext === '.js') {
111
+ const key = require.resolve(fileName);
112
+ delete require.cache[key];
113
+ return require(fileName);
114
+ }
115
+ else if (ext === '.yaml' || ext === '.yml') {
116
+ return (0, js_yaml_1.load)((0, fs_1.readFileSync)(fileName, 'utf8'));
117
+ }
118
+ else if (ext === '.json' || ext === '.json5') {
119
+ return (0, json5_1.parse)((0, fs_1.readFileSync)(fileName, 'utf8'));
120
+ }
121
+ });
122
+ }
123
+ getMessagesInternal() {
124
+ return this._resource.getResource();
125
+ }
126
+ }
127
+ exports.FileLocaleMessage = FileLocaleMessage;
128
+ class LocaleMessages {
129
+ constructor(localeMessages) {
130
+ this.localeMessages = localeMessages;
131
+ }
132
+ get locales() {
133
+ const locales = new Set();
134
+ for (const localeMessage of this.localeMessages) {
135
+ for (const locale of localeMessage.locales) {
136
+ locales.add(locale);
137
+ }
138
+ }
139
+ return [...locales];
140
+ }
141
+ isEmpty() {
142
+ return this.localeMessages.length <= 0;
143
+ }
144
+ findExistLocaleMessage(fullpath) {
145
+ return (this.localeMessages.find(message => message.fullpath === fullpath) || null);
146
+ }
147
+ findBlockLocaleMessage(block) {
148
+ return (this.localeMessages.find((message) => message.block === block) || null);
149
+ }
150
+ findMissingPath(key) {
151
+ let missingPath = [];
152
+ for (const locale of this.locales) {
153
+ const localeMessages = this.localeMessages.map(lm => lm.getMessagesFromLocale(locale));
154
+ if (localeMessages.some(last => {
155
+ return last && typeof last === 'object' ? last[key] != null : false;
156
+ })) {
157
+ return null;
158
+ }
159
+ const paths = [...(0, key_path_1.parsePath)(key)];
160
+ let lasts = localeMessages;
161
+ const targetPaths = [];
162
+ let hasMissing = false;
163
+ while (paths.length) {
164
+ const path = paths.shift();
165
+ targetPaths.push(path);
166
+ const values = lasts
167
+ .map(last => {
168
+ return last && typeof last === 'object' ? last[path] : undefined;
169
+ })
170
+ .filter((val) => val != null);
171
+ if (values.length === 0) {
172
+ if (missingPath.length <= targetPaths.length) {
173
+ missingPath = targetPaths;
174
+ }
175
+ hasMissing = true;
176
+ break;
177
+ }
178
+ lasts = values;
179
+ }
180
+ if (!hasMissing) {
181
+ return null;
182
+ }
183
+ }
184
+ return (0, key_path_1.joinPath)(...missingPath);
185
+ }
186
+ }
187
+ exports.LocaleMessages = LocaleMessages;
@@ -0,0 +1,8 @@
1
+ import type { CompileError, NamedNode, ResourceNode } from '@intlify/message-compiler';
2
+ export type ModuloNamedNode = NamedNode & {
3
+ modulo?: boolean;
4
+ };
5
+ export declare function parse(code: string): {
6
+ ast: ResourceNode;
7
+ errors: CompileError[];
8
+ };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = void 0;
4
+ const utils_1 = require("./utils");
5
+ const parser_1 = require("./parser");
6
+ const traverser_1 = require("./traverser");
7
+ function parse(code) {
8
+ const { ast, errors } = (0, parser_1.parse)(code);
9
+ (0, traverser_1.traverseNode)(ast, node => {
10
+ if (node.type === utils_1.NodeTypes.Message) {
11
+ transformModuloNamedNode(node.items);
12
+ }
13
+ });
14
+ return {
15
+ ast,
16
+ errors
17
+ };
18
+ function transformModuloNamedNode(nodes) {
19
+ var _a;
20
+ for (let index = nodes.length - 1; index >= 1; index--) {
21
+ const node = nodes[index];
22
+ if (node.type !== utils_1.NodeTypes.Named ||
23
+ code[node.loc.start.offset - 1] !== '%')
24
+ continue;
25
+ const prev = nodes[index - 1];
26
+ if (prev.type !== utils_1.NodeTypes.Text || !((_a = prev.value) === null || _a === void 0 ? void 0 : _a.endsWith('%')))
27
+ continue;
28
+ node.modulo = true;
29
+ prev.loc.end.offset -= 1;
30
+ prev.loc.end.column -= 1;
31
+ prev.end -= 1;
32
+ prev.value = prev.value.slice(0, -1);
33
+ if (prev.start === prev.end) {
34
+ nodes.splice(index - 1, 1);
35
+ index--;
36
+ }
37
+ }
38
+ }
39
+ }
40
+ exports.parse = parse;
@@ -0,0 +1,5 @@
1
+ import type { CompileError, ResourceNode } from '@intlify/message-compiler';
2
+ export declare function parse(code: string): {
3
+ ast: ResourceNode;
4
+ errors: CompileError[];
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = void 0;
4
+ const message_compiler_1 = require("@intlify/message-compiler");
5
+ function parse(code) {
6
+ const errors = [];
7
+ const parser = (0, message_compiler_1.createParser)({
8
+ onError(error) {
9
+ errors.push(error);
10
+ }
11
+ });
12
+ const ast = parser.parse(code);
13
+ return {
14
+ ast,
15
+ errors
16
+ };
17
+ }
18
+ exports.parse = parse;
@@ -0,0 +1,6 @@
1
+ import type { LinkedKeyNode, LinkedModifierNode, LinkedNode, ListNode, LiteralNode, MessageNode, NamedNode, PluralNode, ResourceNode, TextNode } from '@intlify/message-compiler';
2
+ import type { ModuloNamedNode } from './parser-v9';
3
+ export type MessageElementNode = TextNode | NamedNode | ListNode | LiteralNode | LinkedNode | ModuloNamedNode;
4
+ type MessageASTNode = ResourceNode | PluralNode | MessageNode | MessageElementNode | LinkedKeyNode | LinkedModifierNode;
5
+ export declare function traverseNode(node: MessageASTNode, visit: (node: MessageASTNode) => void): void;
6
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseNode = void 0;
4
+ const utils_1 = require("./utils");
5
+ function traverseNodes(nodes, visit) {
6
+ for (let i = 0; i < nodes.length; i++) {
7
+ traverseNode(nodes[i], visit);
8
+ }
9
+ }
10
+ function traverseNode(node, visit) {
11
+ if (!node) {
12
+ return;
13
+ }
14
+ visit(node);
15
+ if (node.type === utils_1.NodeTypes.Resource) {
16
+ traverseNode(node.body, visit);
17
+ }
18
+ else if (node.type === utils_1.NodeTypes.Plural) {
19
+ traverseNodes(node.cases, visit);
20
+ }
21
+ else if (node.type === utils_1.NodeTypes.Message) {
22
+ traverseNodes(node.items, visit);
23
+ }
24
+ else if (node.type === utils_1.NodeTypes.Linked) {
25
+ const linked = node;
26
+ if (linked.modifier)
27
+ traverseNode(linked.modifier, visit);
28
+ traverseNode(linked.key, visit);
29
+ }
30
+ }
31
+ exports.traverseNode = traverseNode;
@@ -0,0 +1,28 @@
1
+ import type { RuleContext } from '../../types';
2
+ import type { AST as JSONAST } from 'jsonc-eslint-parser';
3
+ import type { AST as YAMLAST } from 'yaml-eslint-parser';
4
+ export declare const NodeTypes: {
5
+ readonly Resource: 0;
6
+ readonly Plural: 1;
7
+ readonly Message: 2;
8
+ readonly Text: 3;
9
+ readonly Named: 4;
10
+ readonly List: 5;
11
+ readonly Linked: 6;
12
+ readonly LinkedKey: 7;
13
+ readonly LinkedModifier: 8;
14
+ readonly Literal: 9;
15
+ };
16
+ export type MessageSyntaxVersions = {
17
+ v9: boolean;
18
+ v10: boolean;
19
+ v11: boolean;
20
+ isNotSet: boolean;
21
+ reportIfMissingSetting: () => boolean;
22
+ };
23
+ export declare function getMessageSyntaxVersions(context: RuleContext): MessageSyntaxVersions;
24
+ export declare function getReportIndex(node: JSONAST.JSONNode | YAMLAST.YAMLNode, stringOffset: number): number | null;
25
+ export declare function getJSONStringOffset(code: string, stringOffset: number): number;
26
+ export declare function getYAMLSingleQuotedStringOffset(code: string, stringOffset: number): number;
27
+ export declare function getYAMLDoubleQuotedStringOffset(code: string, stringOffset: number): number;
28
+ export declare function getYAMLPlainStringOffset(code: string, stringOffset: number): number;
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getYAMLPlainStringOffset = exports.getYAMLDoubleQuotedStringOffset = exports.getYAMLSingleQuotedStringOffset = exports.getJSONStringOffset = exports.getReportIndex = exports.getMessageSyntaxVersions = exports.NodeTypes = void 0;
4
+ const semver_1 = require("semver");
5
+ exports.NodeTypes = {
6
+ Resource: 0,
7
+ Plural: 1,
8
+ Message: 2,
9
+ Text: 3,
10
+ Named: 4,
11
+ List: 5,
12
+ Linked: 6,
13
+ LinkedKey: 7,
14
+ LinkedModifier: 8,
15
+ Literal: 9
16
+ };
17
+ const puttedSettingsError = new WeakSet();
18
+ function getMessageSyntaxVersions(context) {
19
+ const { settings } = context;
20
+ const messageSyntaxVersion = settings['vue-i18n'] && settings['vue-i18n'].messageSyntaxVersion;
21
+ if (!messageSyntaxVersion) {
22
+ return {
23
+ v9: true,
24
+ v10: true,
25
+ v11: true,
26
+ isNotSet: true,
27
+ reportIfMissingSetting: () => {
28
+ if (!puttedSettingsError.has(context)) {
29
+ const ruleName = context.id;
30
+ context.report({
31
+ loc: { line: 1, column: 0 },
32
+ message: `If you want to use '${ruleName}' rule, you need to set 'messageSyntaxVersion' at 'settings'. See the 'eslint-plugin-vue-i18n' documentation`
33
+ });
34
+ puttedSettingsError.add(context);
35
+ }
36
+ return true;
37
+ }
38
+ };
39
+ }
40
+ const range = new semver_1.Range(messageSyntaxVersion);
41
+ const v9 = (0, semver_1.intersects)(range, '^9.0.0-0');
42
+ const v10 = (0, semver_1.intersects)(range, '^10.0.0-0');
43
+ const v11 = (0, semver_1.intersects)(range, '>=11.0.0-0');
44
+ if (!v9 && !v10 && !v11 && !puttedSettingsError.has(context)) {
45
+ context.report({
46
+ loc: { line: 1, column: 0 },
47
+ message: `Please specify 9 or higher for 'messageSyntaxVersion' at 'settings'.`
48
+ });
49
+ puttedSettingsError.add(context);
50
+ }
51
+ return {
52
+ v9,
53
+ v10,
54
+ v11,
55
+ isNotSet: false,
56
+ reportIfMissingSetting: () => false
57
+ };
58
+ }
59
+ exports.getMessageSyntaxVersions = getMessageSyntaxVersions;
60
+ function getReportIndex(node, stringOffset) {
61
+ if (node.type === 'JSONLiteral' || node.type === 'JSONTemplateLiteral') {
62
+ const stringCode = node.type === 'JSONLiteral'
63
+ ? node.raw.slice(1, -1)
64
+ : node.quasis[0].value.raw;
65
+ return (node.range[0] +
66
+ 1 +
67
+ getJSONStringOffset(stringCode, stringOffset));
68
+ }
69
+ if (node.type === 'YAMLScalar') {
70
+ if (node.style === 'single-quoted' || node.style === 'double-quoted') {
71
+ const stringCode = node.raw.slice(1, -1);
72
+ return (node.range[0] +
73
+ 1 +
74
+ (node.style === 'single-quoted'
75
+ ? getYAMLSingleQuotedStringOffset(stringCode, stringOffset)
76
+ : getYAMLDoubleQuotedStringOffset(stringCode, stringOffset)));
77
+ }
78
+ if (node.style === 'plain') {
79
+ const stringCode = node.raw;
80
+ return node.range[0] + getYAMLPlainStringOffset(stringCode, stringOffset);
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ exports.getReportIndex = getReportIndex;
86
+ function getJSONStringOffset(code, stringOffset) {
87
+ let offset = stringOffset;
88
+ let codeIndex = 0;
89
+ let char;
90
+ while ((char = code[codeIndex++]) && offset > 0) {
91
+ if (char === '\\') {
92
+ char = code[codeIndex++];
93
+ if (char === 'x') {
94
+ codeIndex += 2;
95
+ }
96
+ else if (char === 'u') {
97
+ char = code[codeIndex++];
98
+ if (char === '{') {
99
+ let pointStr = '';
100
+ while ((char = code[codeIndex++]) && char !== '}') {
101
+ pointStr += char;
102
+ }
103
+ let point = parseInt(pointStr, 16);
104
+ while (point > 0xffff) {
105
+ offset--;
106
+ point >>= 16;
107
+ }
108
+ }
109
+ else {
110
+ codeIndex += 3;
111
+ }
112
+ }
113
+ else if (char >= '0' && char <= '9') {
114
+ let octalStr = code.substr(codeIndex - 1, 3).match(/^[0-7]+/u)[0];
115
+ const octal = parseInt(octalStr, 8);
116
+ if (octal > 255) {
117
+ octalStr = octalStr.slice(0, -1);
118
+ }
119
+ if (octalStr.length >= 2) {
120
+ codeIndex += octalStr.length - 1;
121
+ }
122
+ }
123
+ }
124
+ offset--;
125
+ }
126
+ return Math.min(codeIndex - 1, code.length);
127
+ }
128
+ exports.getJSONStringOffset = getJSONStringOffset;
129
+ function getYAMLSingleQuotedStringOffset(code, stringOffset) {
130
+ let offset = stringOffset;
131
+ let codeIndex = 0;
132
+ let char;
133
+ let lineFolding = 0;
134
+ while ((char = code[codeIndex++]) && offset > 0) {
135
+ if (char === "'" && code[codeIndex] === "'") {
136
+ codeIndex++;
137
+ lineFolding = 0;
138
+ }
139
+ else if (isSpaceOrEOL(char)) {
140
+ let nextCodeIndex = processMaybeLineFolding(code, codeIndex - 1);
141
+ if (nextCodeIndex != null) {
142
+ if (lineFolding === 0 && isEOL(code[nextCodeIndex])) {
143
+ nextCodeIndex = processMaybeLineFolding(code, nextCodeIndex);
144
+ }
145
+ codeIndex = nextCodeIndex;
146
+ lineFolding++;
147
+ }
148
+ else {
149
+ lineFolding = 0;
150
+ }
151
+ }
152
+ else {
153
+ lineFolding = 0;
154
+ }
155
+ offset--;
156
+ }
157
+ return Math.min(codeIndex - 1, code.length);
158
+ }
159
+ exports.getYAMLSingleQuotedStringOffset = getYAMLSingleQuotedStringOffset;
160
+ function getYAMLDoubleQuotedStringOffset(code, stringOffset) {
161
+ let offset = stringOffset;
162
+ let codeIndex = 0;
163
+ let char;
164
+ let lineFolding = 0;
165
+ while ((char = code[codeIndex++]) && offset > 0) {
166
+ if (char === '\\') {
167
+ char = code[codeIndex++];
168
+ if (char === 'x') {
169
+ codeIndex += 2;
170
+ }
171
+ else if (char === 'u') {
172
+ codeIndex += 4;
173
+ }
174
+ else if (char === 'U') {
175
+ if (code.substr(codeIndex, 4) !== '0000') {
176
+ offset--;
177
+ }
178
+ codeIndex += 8;
179
+ }
180
+ else if (isEOL(char)) {
181
+ const nextCodeIndex = processMaybeLineFolding(code, codeIndex - 1);
182
+ if (nextCodeIndex != null) {
183
+ codeIndex = nextCodeIndex + 1;
184
+ if (code[nextCodeIndex] === '\\') {
185
+ codeIndex--;
186
+ lineFolding = 0;
187
+ continue;
188
+ }
189
+ }
190
+ }
191
+ lineFolding = 0;
192
+ }
193
+ else if (isSpaceOrEOL(char)) {
194
+ let nextCodeIndex = processMaybeLineFolding(code, codeIndex - 1);
195
+ if (nextCodeIndex != null) {
196
+ if (lineFolding === 0 && isEOL(code[nextCodeIndex])) {
197
+ nextCodeIndex = processMaybeLineFolding(code, nextCodeIndex);
198
+ }
199
+ codeIndex = nextCodeIndex;
200
+ lineFolding++;
201
+ }
202
+ else {
203
+ lineFolding = 0;
204
+ }
205
+ }
206
+ else {
207
+ lineFolding = 0;
208
+ }
209
+ offset--;
210
+ }
211
+ return Math.min(codeIndex - 1, code.length);
212
+ }
213
+ exports.getYAMLDoubleQuotedStringOffset = getYAMLDoubleQuotedStringOffset;
214
+ function getYAMLPlainStringOffset(code, stringOffset) {
215
+ let offset = stringOffset;
216
+ let codeIndex = 0;
217
+ let char;
218
+ let lineFolding = 0;
219
+ while ((char = code[codeIndex++]) && offset > 0) {
220
+ if (isSpaceOrEOL(char)) {
221
+ let nextCodeIndex = processMaybeLineFolding(code, codeIndex - 1);
222
+ if (nextCodeIndex != null) {
223
+ if (lineFolding === 0 && isEOL(code[nextCodeIndex])) {
224
+ nextCodeIndex = processMaybeLineFolding(code, nextCodeIndex);
225
+ }
226
+ codeIndex = nextCodeIndex;
227
+ lineFolding++;
228
+ }
229
+ else {
230
+ lineFolding = 0;
231
+ }
232
+ }
233
+ else {
234
+ lineFolding = 0;
235
+ }
236
+ offset--;
237
+ }
238
+ return Math.min(codeIndex - 1, code.length);
239
+ }
240
+ exports.getYAMLPlainStringOffset = getYAMLPlainStringOffset;
241
+ function isSpace(char) {
242
+ return char === ' ' || char === '\t';
243
+ }
244
+ function isSpaceOrEOL(char) {
245
+ return isSpace(char) || isEOL(char);
246
+ }
247
+ function isEOL(char) {
248
+ return char === '\n' || char === '\r';
249
+ }
250
+ function processMaybeLineFolding(code, spaceIndex) {
251
+ let codeIndex = spaceIndex;
252
+ let char;
253
+ let hasNewline = false;
254
+ while ((char = code[codeIndex++])) {
255
+ if (isEOL(char)) {
256
+ if (hasNewline) {
257
+ return codeIndex - 1;
258
+ }
259
+ if (char === '\r' && code[codeIndex] === '\n') {
260
+ codeIndex++;
261
+ }
262
+ hasNewline = true;
263
+ }
264
+ else if (!isSpace(char)) {
265
+ if (hasNewline) {
266
+ return codeIndex - 1;
267
+ }
268
+ else {
269
+ return null;
270
+ }
271
+ }
272
+ }
273
+ if (hasNewline) {
274
+ return codeIndex - 1;
275
+ }
276
+ else {
277
+ return null;
278
+ }
279
+ }
@@ -0,0 +1,2 @@
1
+ import type { Parser } from '.';
2
+ export declare function buildParserUsingFlatConfig(cwd: string): Parser;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildParserUsingFlatConfig = void 0;
4
+ const synckit_1 = require("synckit");
5
+ const getSync = (0, synckit_1.createSyncFn)(require.resolve('./worker'));
6
+ function buildParserUsingFlatConfig(cwd) {
7
+ return (filePath) => {
8
+ return getSync(cwd, filePath);
9
+ };
10
+ }
11
+ exports.buildParserUsingFlatConfig = buildParserUsingFlatConfig;
@@ -0,0 +1,2 @@
1
+ import type { Parser } from '.';
2
+ export declare function buildParserUsingLegacyConfig(cwd: string): Parser;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildParserUsingLegacyConfig = void 0;
7
+ const eslintrc_1 = require("@eslint/eslintrc");
8
+ const path_1 = __importDefault(require("path"));
9
+ const parse_by_parser_1 = require("./parse-by-parser");
10
+ const { CascadingConfigArrayFactory } = eslintrc_1.Legacy;
11
+ function buildParserUsingLegacyConfig(cwd) {
12
+ const configArrayFactory = new CascadingConfigArrayFactory({
13
+ additionalPluginPool: new Map([
14
+ ['@intlify/vue-i18n', require('../../index')]
15
+ ]),
16
+ cwd,
17
+ getEslintRecommendedConfig() {
18
+ return {};
19
+ },
20
+ getEslintAllConfig() {
21
+ return {};
22
+ }
23
+ });
24
+ function getConfigForFile(filePath) {
25
+ const absolutePath = path_1.default.resolve(cwd, filePath);
26
+ return configArrayFactory
27
+ .getConfigArrayForFile(absolutePath)
28
+ .extractConfig(absolutePath)
29
+ .toCompatibleObjectAsConfigFileContent();
30
+ }
31
+ return (filePath) => {
32
+ const config = getConfigForFile(filePath);
33
+ const parserOptions = Object.assign({}, config.parserOptions, {
34
+ loc: true,
35
+ range: true,
36
+ raw: true,
37
+ tokens: true,
38
+ comment: true,
39
+ eslintVisitorKeys: true,
40
+ eslintScopeManager: true,
41
+ filePath
42
+ });
43
+ return (0, parse_by_parser_1.parseByParser)(filePath, config.parser, parserOptions);
44
+ };
45
+ }
46
+ exports.buildParserUsingLegacyConfig = buildParserUsingLegacyConfig;
@@ -0,0 +1,4 @@
1
+ import type { AST as VAST } from 'vue-eslint-parser';
2
+ export type ParseResult = Pick<VAST.ESLintExtendedProgram, 'ast' | 'visitorKeys'> | null;
3
+ export type Parser = (filePath: string) => ParseResult;
4
+ export declare function buildParserFromConfig(cwd: string): Parser;