Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: intlify/eslint-plugin-vue-i18n
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.0-next.4
Choose a base ref
...
head repository: intlify/eslint-plugin-vue-i18n
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.0.0-next.5
Choose a head ref

Commits on Oct 2, 2023

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    4de8828 View commit details

Commits on Oct 6, 2023

  1. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    c4414ee View commit details

Commits on Oct 9, 2023

  1. Copy the full SHA
    b13197c View commit details

Commits on Oct 15, 2023

  1. Copy the full SHA
    1292c30 View commit details

Commits on Oct 26, 2023

  1. build(deps-dev): bump postcss from 8.4.27 to 8.4.31 (#438)

    Bumps [postcss](https://github.com/postcss/postcss) from 8.4.27 to 8.4.31.
    - [Release notes](https://github.com/postcss/postcss/releases)
    - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
    - [Commits](postcss/postcss@8.4.27...8.4.31)
    
    ---
    updated-dependencies:
    - dependency-name: postcss
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Oct 26, 2023
    Copy the full SHA
    9fda010 View commit details
  2. chore(deps): update actions/setup-node action to v4 (#442)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Oct 26, 2023
    Copy the full SHA
    5171204 View commit details

Commits on Oct 27, 2023

  1. build(deps-dev): bump @babel/traverse from 7.22.8 to 7.23.2 (#444)

    Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2.
    - [Release notes](https://github.com/babel/babel/releases)
    - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
    
    ---
    updated-dependencies:
    - dependency-name: "@babel/traverse"
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Oct 27, 2023
    Copy the full SHA
    3005be0 View commit details
  2. chore(deps): update pnpm to v8.9.2 (#441)

    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    renovate[bot] authored Oct 27, 2023
    Copy the full SHA
    d587bd9 View commit details
  3. Copy the full SHA
    dc1544c View commit details

Commits on Nov 1, 2023

  1. Copy the full SHA
    58939b3 View commit details

Commits on Nov 12, 2023

  1. Copy the full SHA
    1982eb5 View commit details

Commits on Nov 13, 2023

  1. Copy the full SHA
    aeb4065 View commit details

Commits on Nov 14, 2023

  1. Copy the full SHA
    5af5614 View commit details

Commits on Nov 24, 2023

  1. Copy the full SHA
    8c8c1c8 View commit details

Commits on Nov 28, 2023

  1. Copy the full SHA
    a672edc View commit details

Commits on Dec 7, 2023

  1. Copy the full SHA
    e190bae View commit details

Commits on Dec 9, 2023

  1. Copy the full SHA
    a752ded View commit details

Commits on Dec 13, 2023

  1. Copy the full SHA
    f2dbb51 View commit details

Commits on Dec 26, 2023

  1. Copy the full SHA
    bfa9bb3 View commit details

Commits on Dec 28, 2023

  1. build(deps-dev): bump vite from 4.4.7 to 4.5.1 (#454)

    Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.7 to 4.5.1.
    - [Release notes](https://github.com/vitejs/vite/releases)
    - [Changelog](https://github.com/vitejs/vite/blob/v4.5.1/packages/vite/CHANGELOG.md)
    - [Commits](https://github.com/vitejs/vite/commits/v4.5.1/packages/vite)
    
    ---
    updated-dependencies:
    - dependency-name: vite
      dependency-type: indirect
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Dec 28, 2023
    Copy the full SHA
    db35ec5 View commit details
  2. fix(deps): update dependency @eslint/eslintrc to v3 (#459)

    * fix(deps): update dependency @eslint/eslintrc to v3
    
    * Create fresh-squids-build.md
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Yosuke Ota <otameshiyo23@gmail.com>
    renovate[bot] and ota-meshi authored Dec 28, 2023
    Copy the full SHA
    8b3d347 View commit details

Commits on Jan 3, 2024

  1. Copy the full SHA
    9eea5c2 View commit details

Commits on Jan 10, 2024

  1. Copy the full SHA
    7042275 View commit details

Commits on Jan 17, 2024

  1. feat: add support for eslint v9 (#463)

    * feat: add support for eslint v9
    
    * Create shiny-colts-search.md
    
    * fix
    
    * format
    ota-meshi authored Jan 17, 2024
    Copy the full SHA
    a488f15 View commit details
  2. chore: release @intlify/eslint-plugin-vue-i18n (next) (#460)

    Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
    github-actions[bot] and github-actions[bot] authored Jan 17, 2024
    Copy the full SHA
    a0739bb View commit details
Showing with 579 additions and 320 deletions.
  1. +5 −0 .changeset/fresh-squids-build.md
  2. +2 −0 .changeset/pre.json
  3. +5 −0 .changeset/shiny-colts-search.md
  4. +36 −1 .eslintrc.cjs
  5. +1 −1 .github/workflows/Release.yml
  6. +5 −5 .github/workflows/test.yml
  7. +10 −0 CHANGELOG.md
  8. +1 −1 docs/.vitepress/components/resource-group.vue
  9. +9 −5 lib/rules/key-format-style.ts
  10. +3 −1 lib/rules/no-deprecated-i18n-component.ts
  11. +14 −10 lib/rules/no-duplicate-keys-in-locale.ts
  12. +3 −2 lib/rules/no-dynamic-keys.ts
  13. +5 −3 lib/rules/no-html-messages.ts
  14. +9 −4 lib/rules/no-missing-keys-in-other-locales.ts
  15. +22 −19 lib/rules/no-raw-text.ts
  16. +9 −4 lib/rules/no-unknown-locale.ts
  17. +12 −8 lib/rules/no-unused-keys.ts
  18. +9 −5 lib/rules/prefer-linked-key-with-paren.ts
  19. +7 −4 lib/rules/prefer-sfc-lang-attr.ts
  20. +3 −1 lib/rules/sfc-locale-attr.ts
  21. +9 −5 lib/rules/valid-message-syntax.ts
  22. +7 −7 lib/types/eslint.ts
  23. +2 −2 lib/types/vue-parser-services.ts
  24. +2 −0 lib/utils.ts
  25. +9 −0 lib/utils/compat.ts
  26. +2 −3 lib/utils/get-cwd.ts
  27. +20 −15 lib/utils/index.ts
  28. +8 −6 package.json
  29. +143 −43 pnpm-lock.yaml
  30. +1 −1 scripts/new-rule.ts
  31. +9 −0 tests/lib/eslint-compat.ts
  32. +13 −14 tests/lib/rules/key-format-style.ts
  33. +3 −3 tests/lib/rules/no-deprecated-i18n-component.ts
  34. +3 −3 tests/lib/rules/no-deprecated-i18n-place-attr.ts
  35. +3 −3 tests/lib/rules/no-deprecated-i18n-places-prop.ts
  36. +7 −3 tests/lib/rules/no-duplicate-keys-in-locale.ts
  37. +3 −3 tests/lib/rules/no-dynamic-keys.ts
  38. +7 −3 tests/lib/rules/no-html-messages.ts
  39. +3 −3 tests/lib/rules/no-i18n-t-path-prop.ts
  40. +17 −16 tests/lib/rules/no-missing-keys-in-other-locales.ts
  41. +16 −6 tests/lib/rules/no-missing-keys.ts
  42. +9 −6 tests/lib/rules/no-raw-text.ts
  43. +18 −18 tests/lib/rules/no-unknown-locale.ts
  44. +10 −5 tests/lib/rules/no-unused-keys.ts
  45. +7 −3 tests/lib/rules/no-v-html.ts
  46. +11 −12 tests/lib/rules/prefer-linked-key-with-paren.ts
  47. +7 −3 tests/lib/rules/prefer-sfc-lang-attr.ts
  48. +4 −5 tests/lib/rules/sfc-locale-attr.ts
  49. +25 −30 tests/lib/rules/valid-message-syntax.ts
  50. +23 −19 tests/lib/test-utils.ts
  51. +4 −2 tests/lib/utils/index.ts
  52. +2 −2 tests/lib/utils/rule.ts
  53. +2 −2 tsconfig.json
5 changes: 5 additions & 0 deletions .changeset/fresh-squids-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@intlify/eslint-plugin-vue-i18n": patch
---

fix(deps): update dependency @eslint/eslintrc to v3
2 changes: 2 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -6,7 +6,9 @@
},
"changesets": [
"forty-tools-dream",
"fresh-squids-build",
"olive-chairs-invent",
"shiny-colts-search",
"ten-insects-deny"
]
}
5 changes: 5 additions & 0 deletions .changeset/shiny-colts-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@intlify/eslint-plugin-vue-i18n": minor
---

feat: add support for eslint v9
37 changes: 36 additions & 1 deletion .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -20,7 +20,42 @@ module.exports = {
rules: {
'object-shorthand': 'error',
'no-debugger': 'error',
'vue/multi-word-component-names': 'off'
'vue/multi-word-component-names': 'off',

'prefer-template': 'error',
'no-restricted-properties': [
'error',
{
object: 'context',
property: 'getSourceCode',
message: 'Use lib/utils/compat.ts'
},
{
object: 'context',
property: 'getFilename',
message: 'Use lib/utils/compat.ts'
},
{
object: 'context',
property: 'getPhysicalFilename',
message: 'Use lib/utils/compat.ts'
},
{
object: 'context',
property: 'getCwd',
message: 'Use lib/utils/compat.ts'
},
{
object: 'context',
property: 'getScope',
message: 'Use lib/utils/compat.ts'
},
{
object: 'context',
property: 'parserServices',
message: 'Use lib/utils/compat.ts'
}
]
},
overrides: [
{
2 changes: 1 addition & 1 deletion .github/workflows/Release.yml
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ jobs:
fetch-depth: 0

- name: Setup Node.js 16
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 16

10 changes: 5 additions & 5 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 16
- name: Enable corepack
@@ -37,7 +37,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Enable corepack
@@ -56,13 +56,13 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
eslint: [5, 6, 7, 8]
node: [16]
eslint: [5, 6, 7, 8, ^9.0.0-0]
node: [20]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Enable corepack
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
## 3.0.0-next.2

## 3.0.0-next.5

### Minor Changes

- [#463](https://github.com/intlify/eslint-plugin-vue-i18n/pull/463) [`a488f15`](https://github.com/intlify/eslint-plugin-vue-i18n/commit/a488f15f35190ea4803ba9716e6ffc207277d7d2) Thanks [@ota-meshi](https://github.com/ota-meshi)! - feat: add support for eslint v9

### Patch Changes

- [#459](https://github.com/intlify/eslint-plugin-vue-i18n/pull/459) [`8b3d347`](https://github.com/intlify/eslint-plugin-vue-i18n/commit/8b3d347e9e10b4cce0b8527675c230654d8e28bd) Thanks [@renovate](https://github.com/apps/renovate)! - fix(deps): update dependency @eslint/eslintrc to v3

## 3.0.0-next.4

### Patch Changes
2 changes: 1 addition & 1 deletion docs/.vitepress/components/resource-group.vue
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ export default {
return {
$resourceGroup: {
async set(fileName, code) {
Vue.set(data.fileContents, '/path/' + fileName, code)
Vue.set(data.fileContents, `/path/${fileName}`, code)
const timeSeq = ++waitSeq
await Vue.nextTick()
14 changes: 9 additions & 5 deletions lib/rules/key-format-style.ts
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import type { RuleContext, RuleListener } from '../types'
import { getCasingChecker } from '../utils/casing'
import type { LocaleMessage } from '../utils/locale-messages'
import { createRule } from '../utils/rule'
import { getFilename, getSourceCode } from '../utils/compat'
const debug = debugBuilder('eslint-plugin-vue-i18n:key-format-style')

const allowedCaseOptions = [
@@ -21,7 +22,8 @@ const allowedCaseOptions = [
type CaseOption = (typeof allowedCaseOptions)[number]

function create(context: RuleContext): RuleListener {
const filename = context.getFilename()
const filename = getFilename(context)
const sourceCode = getSourceCode(context)
const expectCasing: CaseOption = context.options[0] ?? 'camelCase'
const checker = getCasingChecker(expectCasing)
const allowArray: boolean = context.options[1]?.allowArray
@@ -115,7 +117,6 @@ function create(context: RuleContext): RuleListener {
if (cachedLoc) {
return cachedLoc
}
const sourceCode = context.getSourceCode()
return (cachedLoc = {
start: sourceCode.getLocFromIndex(offset + start),
end: sourceCode.getLocFromIndex(offset + end)
@@ -264,17 +265,20 @@ function create(context: RuleContext): RuleListener {
return createVisitorForYaml(targetLocaleMessage)
}
)
} else if (context.parserServices.isJSON || context.parserServices.isYAML) {
} else if (
sourceCode.parserServices.isJSON ||
sourceCode.parserServices.isYAML
) {
const localeMessages = getLocaleMessages(context)
const targetLocaleMessage = localeMessages.findExistLocaleMessage(filename)
if (!targetLocaleMessage) {
debug(`ignore ${filename} in key-format-style`)
return {}
}

if (context.parserServices.isJSON) {
if (sourceCode.parserServices.isJSON) {
return createVisitorForJson(targetLocaleMessage)
} else if (context.parserServices.isYAML) {
} else if (sourceCode.parserServices.isYAML) {
return createVisitorForYaml(targetLocaleMessage)
}
return {}
4 changes: 3 additions & 1 deletion lib/rules/no-deprecated-i18n-component.ts
Original file line number Diff line number Diff line change
@@ -5,14 +5,16 @@ import { defineTemplateBodyVisitor } from '../utils/index'
import type { RuleContext, RuleListener } from '../types'
import type { AST as VAST } from 'vue-eslint-parser'
import { createRule } from '../utils/rule'
import { getSourceCode } from '../utils/compat'

function create(context: RuleContext): RuleListener {
return defineTemplateBodyVisitor(context, {
VElement(node: VAST.VElement) {
if (node.name !== 'i18n') {
return
}
const tokenStore = context.parserServices.getTemplateBodyTokenStore()
const sourceCode = getSourceCode(context)
const tokenStore = sourceCode.parserServices.getTemplateBodyTokenStore()
const tagNameToken = tokenStore.getFirstToken(node.startTag)
context.report({
node: tagNameToken,
24 changes: 14 additions & 10 deletions lib/rules/no-duplicate-keys-in-locale.ts
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@ import type {
import { joinPath } from '../utils/key-path'
import { getCwd } from '../utils/get-cwd'
import { createRule } from '../utils/rule'
import { getFilename, getSourceCode } from '../utils/compat'
const debug = debugBuilder('eslint-plugin-vue-i18n:no-duplicate-keys-in-locale')

interface DictData {
@@ -34,13 +35,14 @@ interface PathStack {
function getMessageFilepath(fullPath: string, context: RuleContext) {
const cwd = getCwd(context)
if (fullPath.startsWith(cwd)) {
return fullPath.replace(cwd + '/', './')
return fullPath.replace(`${cwd}/`, './')
}
return fullPath
}

function create(context: RuleContext): RuleListener {
const filename = context.getFilename()
const filename = getFilename(context)
const sourceCode = getSourceCode(context)
const options = (context.options && context.options[0]) || {}
const ignoreI18nBlock = Boolean(options.ignoreI18nBlock)

@@ -129,7 +131,7 @@ function create(context: RuleContext): RuleListener {
}
if (typeof value.value !== 'object') {
reportFiles.push(
'"' + getMessageFilepath(value.source.fullpath, context) + '"'
`"${getMessageFilepath(value.source.fullpath, context)}"`
)
} else {
nextOtherDictionaries.push({
@@ -145,7 +147,7 @@ function create(context: RuleContext): RuleListener {
message: `duplicate key '${keyPathStr}' in '${pathStack.locale}'. ${
reportFiles.length === 0
? last
: reportFiles.join(', ') + ', and ' + last
: `${reportFiles.join(', ')}, and ${last}`
} has the same key`,
loc: reportNode.loc
})
@@ -316,7 +318,7 @@ function create(context: RuleContext): RuleListener {
lm => lm !== targetLocaleMessage
)
return createVisitorForJson(
ctx.getSourceCode(),
getSourceCode(ctx),
targetLocaleMessage,
otherLocaleMessages
)
@@ -335,31 +337,33 @@ function create(context: RuleContext): RuleListener {
lm => lm !== targetLocaleMessage
)
return createVisitorForYaml(
ctx.getSourceCode(),
getSourceCode(ctx),
targetLocaleMessage,
otherLocaleMessages
)
}
)
} else if (context.parserServices.isJSON || context.parserServices.isYAML) {
} else if (
sourceCode.parserServices.isJSON ||
sourceCode.parserServices.isYAML
) {
const localeMessages = getLocaleMessages(context)
const targetLocaleMessage = localeMessages.findExistLocaleMessage(filename)
if (!targetLocaleMessage) {
debug(`ignore ${filename} in no-duplicate-keys-in-locale`)
return {}
}

const sourceCode = context.getSourceCode()
const otherLocaleMessages: LocaleMessage[] =
localeMessages.localeMessages.filter(lm => lm !== targetLocaleMessage)

if (context.parserServices.isJSON) {
if (sourceCode.parserServices.isJSON) {
return createVisitorForJson(
sourceCode,
targetLocaleMessage,
otherLocaleMessages
)
} else if (context.parserServices.isYAML) {
} else if (sourceCode.parserServices.isYAML) {
return createVisitorForYaml(
sourceCode,
targetLocaleMessage,
5 changes: 3 additions & 2 deletions lib/rules/no-dynamic-keys.ts
Original file line number Diff line number Diff line change
@@ -5,12 +5,13 @@ import { defineTemplateBodyVisitor, isStaticLiteral } from '../utils/index'
import type { RuleContext, RuleListener } from '../types'
import type { AST as VAST } from 'vue-eslint-parser'
import { createRule } from '../utils/rule'
import { getSourceCode } from '../utils/compat'

function getNodeName(context: RuleContext, node: VAST.Node): string {
if (node.type === 'Identifier') {
return node.name
}
const sourceCode = context.getSourceCode()
const sourceCode = getSourceCode(context)
if (
sourceCode.ast.range[0] <= node.range[0] &&
node.range[1] <= sourceCode.ast.range[1]
@@ -20,7 +21,7 @@ function getNodeName(context: RuleContext, node: VAST.Node): string {
.map(t => t.value)
.join('')
}
const tokenStore = context.parserServices.getTemplateBodyTokenStore()
const tokenStore = sourceCode.parserServices.getTemplateBodyTokenStore()
return tokenStore
.getTokens(node)
.map(t => t.value)
8 changes: 5 additions & 3 deletions lib/rules/no-html-messages.ts
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import type { AST as YAMLAST } from 'yaml-eslint-parser'
import type { RuleContext, RuleListener } from '../types'
import { createRule } from '../utils/rule'
import type { DefaultTreeAdapterMap } from 'parse5'
import { getFilename, getSourceCode } from '../utils/compat'

const debug = debugBuilder('eslint-plugin-vue-i18n:no-html-messages')

@@ -25,7 +26,8 @@ function findHTMLNode(node: DocumentFragment): Element | undefined {
}

function create(context: RuleContext): RuleListener {
const filename = context.getFilename()
const filename = getFilename(context)
const sourceCode = getSourceCode(context)

/**
* @param {JSONLiteral} node
@@ -97,14 +99,14 @@ function create(context: RuleContext): RuleListener {
}
}
)
} else if (context.parserServices.isJSON) {
} else if (sourceCode.parserServices.isJSON) {
if (!getLocaleMessages(context).findExistLocaleMessage(filename)) {
return {}
}
return {
JSONLiteral: verifyJSONLiteral
}
} else if (context.parserServices.isYAML) {
} else if (sourceCode.parserServices.isYAML) {
if (!getLocaleMessages(context).findExistLocaleMessage(filename)) {
return {}
}
13 changes: 9 additions & 4 deletions lib/rules/no-missing-keys-in-other-locales.ts
Original file line number Diff line number Diff line change
@@ -14,12 +14,14 @@ import type {
import type { LocaleMessage, LocaleMessages } from '../utils/locale-messages'
import { joinPath } from '../utils/key-path'
import { createRule } from '../utils/rule'
import { getFilename, getSourceCode } from '../utils/compat'
const debug = debugBuilder(
'eslint-plugin-vue-i18n:no-missing-keys-in-other-locales'
)

function create(context: RuleContext): RuleListener {
const filename = context.getFilename()
const filename = getFilename(context)
const sourceCode = getSourceCode(context)
const ignoreLocales: string[] = context.options[0]?.ignoreLocales || []

function reportMissing(
@@ -307,17 +309,20 @@ function create(context: RuleContext): RuleListener {
return createVisitorForYaml(targetLocaleMessage, localeMessages)
}
)
} else if (context.parserServices.isJSON || context.parserServices.isYAML) {
} else if (
sourceCode.parserServices.isJSON ||
sourceCode.parserServices.isYAML
) {
const localeMessages = getLocaleMessages(context)
const targetLocaleMessage = localeMessages.findExistLocaleMessage(filename)
if (!targetLocaleMessage) {
debug(`ignore ${filename} in no-missing-keys-in-other-locales`)
return {}
}

if (context.parserServices.isJSON) {
if (sourceCode.parserServices.isJSON) {
return createVisitorForJson(targetLocaleMessage, localeMessages)
} else if (context.parserServices.isYAML) {
} else if (sourceCode.parserServices.isYAML) {
return createVisitorForYaml(targetLocaleMessage, localeMessages)
}
return {}
Loading