about summary refs log tree commit diff
path: root/eslint
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-06-18 08:23:41 +0300
committerGitHub <noreply@github.com>2024-06-18 08:23:41 +0300
commite6213d7aa56faa6994a27bf127c63ded69e67d6f (patch)
treeebdd76bda638c8547e2b90e12abd12330aa93f0c /eslint
parent077da0830924d4c040ef095d8349f13fdfdf4372 (diff)
downloadvoidsky-e6213d7aa56faa6994a27bf127c63ded69e67d6f.tar.zst
Fix Android startup perf regression (#4544)
Diffstat (limited to 'eslint')
-rw-r--r--eslint/index.js1
-rw-r--r--eslint/keep-i18n-patch-in-sync.js28
2 files changed, 29 insertions, 0 deletions
diff --git a/eslint/index.js b/eslint/index.js
index bb31a942d..955103d8c 100644
--- a/eslint/index.js
+++ b/eslint/index.js
@@ -2,6 +2,7 @@
 
 module.exports = {
   rules: {
+    'keep-i18n-patch-in-sync': require('./keep-i18n-patch-in-sync'),
     'avoid-unwrapped-text': require('./avoid-unwrapped-text'),
     'use-typed-gates': require('./use-typed-gates'),
   },
diff --git a/eslint/keep-i18n-patch-in-sync.js b/eslint/keep-i18n-patch-in-sync.js
new file mode 100644
index 000000000..ee183a5c6
--- /dev/null
+++ b/eslint/keep-i18n-patch-in-sync.js
@@ -0,0 +1,28 @@
+/* eslint-disable bsky-internal/keep-i18n-patch-in-sync */
+const LOCALE_DATA_FOLDER = '@formatjs/intl-pluralrules/locale-data/'
+const GEN_MODULE_PATH =
+  '@formatjs/intl-pluralrules/supported-locales.generated.js'
+
+exports.create = function create(context) {
+  delete require.cache[require.resolve(GEN_MODULE_PATH)]
+  const {supportedLocales} = require(GEN_MODULE_PATH)
+  return {
+    Literal(node) {
+      if (typeof node.value !== 'string') {
+        return
+      }
+      if (!node.value.startsWith(LOCALE_DATA_FOLDER)) {
+        return
+      }
+      const code = node.value.slice(LOCALE_DATA_FOLDER.length)
+      if (!supportedLocales.includes(code)) {
+        context.report({
+          node,
+          message:
+            'Edit .patches/@formatjs+intl-pluralrules+XXX.patch to include ' +
+            code,
+        })
+      }
+    },
+  }
+}