diff --git a/eslint.config.cjs b/eslint.config.cjs
index 343b0508231..92bdc286c07 100644
--- a/eslint.config.cjs
+++ b/eslint.config.cjs
@@ -28,7 +28,7 @@ module.exports = [
],
},
- // Configuration for build and config files (CommonJS) - MUST come before js.configs.recommended
+ // Configuration for build and config files (CommonJS)
{
files: [
"webpack.config.js",
@@ -50,7 +50,7 @@ module.exports = [
},
},
- // Configuration for Vite config files (ES modules) - MUST come before js.configs.recommended
+ // Configuration for Vite config files (ES modules)
{
files: [
"openlibrary/components/vite.config.mjs",
@@ -68,7 +68,7 @@ module.exports = [
},
},
- // Configuration for Storybook preview files (ES modules) - MUST come before js.configs.recommended
+ // Configuration for Storybook preview files (ES modules)
{
files: ["stories/.storybook/preview.js"],
languageOptions: {
@@ -89,7 +89,7 @@ module.exports = [
// Vue plugin configuration
...vuePlugin.configs["flat/recommended"],
- // Base configuration for all JS/Vue files (except config and build files)
+ // Base configuration for all JS/Vue files
{
files: ["**/*.js", "**/*.vue"],
plugins: {
@@ -135,6 +135,12 @@ module.exports = [
"quote-props": ["error", "as-needed"],
"keyword-spacing": ["error", { before: true, after: true }],
"key-spacing": ["error", { mode: "strict" }],
+
+ // GLOBALLY ENFORCED FORMATTING RULES
+ "semi": ["error", "always"],
+ "space-before-function-paren": ["error", "never"],
+ "comma-spacing": ["error", { "before": false, "after": true }],
+
"vue/no-mutating-props": "off",
"vue/multi-word-component-names": [
"error",
@@ -142,7 +148,7 @@ module.exports = [
ignores: ["Bookshelf", "Shelf"],
},
],
- // jQuery deprecated rules (from plugin:no-jquery/deprecated)
+ // jQuery deprecated rules
"no-jquery/no-box-model": "warn",
"no-jquery/no-browser": "warn",
"no-jquery/no-live": "warn",
@@ -222,4 +228,82 @@ module.exports = [
},
},
},
+
+ // TEMPORARY EXEMPTIONS: Turn off new formatting rules for files locked in active PRs
+ {
+ files: [
+ "openlibrary/components/BarcodeScanner.vue",
+ "openlibrary/components/BarcodeScanner/components/LazyBookCard.vue",
+ "openlibrary/components/BarcodeScanner/utils/classes.js",
+ "openlibrary/components/BulkSearch.vue",
+ "openlibrary/components/BulkSearch/components/BookCard.vue",
+ "openlibrary/components/BulkSearch/components/BulkSearchControls.vue",
+ "openlibrary/components/BulkSearch/components/MatchRow.vue",
+ "openlibrary/components/BulkSearch/components/MatchTable.vue",
+ "openlibrary/components/BulkSearch/components/NoBookCard.vue",
+ "openlibrary/components/BulkSearch/utils/classes.js",
+ "openlibrary/components/BulkSearch/utils/searchUtils.js",
+ "openlibrary/components/HelloWorld.vue",
+ "openlibrary/components/IdentifiersInput.vue",
+ "openlibrary/components/IdentifiersInput/utils/utils.js",
+ "openlibrary/components/LibraryExplorer.vue",
+ "openlibrary/components/LibraryExplorer/components/BookCover3D.vue",
+ "openlibrary/components/LibraryExplorer/components/BookRoom.vue",
+ "openlibrary/components/LibraryExplorer/components/BooksCarousel.vue",
+ "openlibrary/components/LibraryExplorer/components/CSSBox.vue",
+ "openlibrary/components/LibraryExplorer/components/ClassSlider.vue",
+ "openlibrary/components/LibraryExplorer/components/DemoA.vue",
+ "openlibrary/components/LibraryExplorer/components/FlatBookCover.vue",
+ "openlibrary/components/LibraryExplorer/components/LibraryToolbar.vue",
+ "openlibrary/components/LibraryExplorer/components/OLCarousel.vue",
+ "openlibrary/components/LibraryExplorer/components/Shelf.vue",
+ "openlibrary/components/LibraryExplorer/components/ShelfIndex.vue",
+ "openlibrary/components/LibraryExplorer/components/ShelfLabel.vue",
+ "openlibrary/components/LibraryExplorer/components/ShelfProgressBar.vue",
+ "openlibrary/components/LibraryExplorer/utils.js",
+ "openlibrary/components/LibraryExplorer/utils/lcc.js",
+ "openlibrary/components/MergeUI/MergeTable.vue",
+ "openlibrary/components/MergeUI/utils.js",
+ "openlibrary/components/ObservationForm/ObservationService.js",
+ "openlibrary/components/ObservationForm/Utils.js",
+ "openlibrary/components/lit/OLChip.js",
+ "openlibrary/components/lit/OLChipGroup.js",
+ "openlibrary/components/lit/OLReadMore.js",
+ "openlibrary/components/lit/OlPagination.js",
+ "openlibrary/components/lit/OlPopover.js",
+ "openlibrary/components/rollupInputCore.js",
+ "openlibrary/plugins/openlibrary/js/Browser.js",
+ "openlibrary/plugins/openlibrary/js/SearchBar.js",
+ "openlibrary/plugins/openlibrary/js/SearchPage.js",
+ "openlibrary/plugins/openlibrary/js/SearchUtils.js",
+ "openlibrary/plugins/openlibrary/js/Toast.js",
+ "openlibrary/plugins/openlibrary/js/add-book.js",
+ "openlibrary/plugins/openlibrary/js/add_provider.js",
+ "openlibrary/plugins/openlibrary/js/admin.js",
+ "openlibrary/plugins/openlibrary/js/affiliate-links.js",
+ "openlibrary/plugins/openlibrary/js/autocomplete.js",
+ "openlibrary/plugins/openlibrary/js/banner/index.js",
+ "openlibrary/plugins/openlibrary/js/bulk-tagger/BulkTagger.js",
+ "openlibrary/plugins/openlibrary/js/carousel/Carousel.js",
+ "openlibrary/plugins/openlibrary/js/carousel/index.js",
+ "openlibrary/plugins/openlibrary/js/dialog.js",
+ "openlibrary/plugins/openlibrary/js/edit.js",
+ "openlibrary/plugins/openlibrary/js/goodreads_import.js",
+ "openlibrary/plugins/openlibrary/js/i18n.js",
+ "openlibrary/plugins/openlibrary/js/ile/index.js",
+ "openlibrary/plugins/openlibrary/js/ile/utils/SelectionManager/SelectionManager.js",
+ "openlibrary/plugins/openlibrary/js/markdown-editor/index.js",
+ "openlibrary/plugins/openlibrary/js/merge-request-table/MergeRequestService.js",
+ "openlibrary/plugins/openlibrary/js/merge.js",
+ "openlibrary/plugins/openlibrary/js/modals/index.js",
+ "openlibrary/plugins/openlibrary/js/my-books/MyBooksDropper/ReadingLogForms.js",
+ "openlibrary/plugins/openlibrary/js/password-toggle.js",
+ "openlibrary/plugins/openlibrary/js/service-worker-init.js"
+ ],
+ rules: {
+ "semi": "off",
+ "space-before-function-paren": "off",
+ "comma-spacing": "off"
+ }
+ }
];
diff --git a/openlibrary/components/BulkSearch/utils/samples.js b/openlibrary/components/BulkSearch/utils/samples.js
index e9c08adddf5..1d5f9531a85 100644
--- a/openlibrary/components/BulkSearch/utils/samples.js
+++ b/openlibrary/components/BulkSearch/utils/samples.js
@@ -19,4 +19,4 @@ export const sampleData = [
source: 'https://en.wikipedia.org/wiki/Bibliography_of_the_Holocaust#Historical_studies',
text: 'Bauer, Yehuda (1994). Jews for Sale? Nazi-Jewish Negotiations 1933-1945. Yale University Press. ISBN 0-300-06852-2.\nBerenbaum, Michael (1990). A Mosaic of Victims: Non-Jews Persecuted and Murdered by the Nazis.\nBergen, Doris (2009). War and Genocide: Concise History of the Holocaust.\nBlack, Edwin (2010). The Farhud: The Arab-Nazi Alliance in the Holocaust. Dialog Press. ISBN 0-914153-14-5.\nBraham, Randolph (1994) [1981]. The Politics of Genocide: The Holocaust in Hungary. Columbia University Press. ISBN 0-88033-247-6.\nBraham, Randolph (2011). The Auschwitz Reports and the Holocaust in Hungary. Columbia University Press.\nChalmers, Beverley (2015). Birth, Sex and Abuse: Women\'s Voices Under Nazi Rule. Grosvenor House Publishing Ltd. ISBN 1781483531.\nDavies, Norman; Lukas, Richard C. (2001) [1996]. Forgotten Holocaust: The Poles Under German Occupation.\nDean, Martin (2008). Robbing the Jews: The Confiscation of Jewish Property in the Holocaust. Cambridge University Press.\nEvans, Suzanne (2004). Forgotten Crimes: The Holocaust and People with Disabilities.\nFriedländer, Saul (1998). The Years of Persecution: Nazi Germany and the Jews, 1933-1939. Vol. 1.\nGrau, Gunter; Shoppmann, Claudia (1995). The Hidden Holocaust?: Gay and Lesbian Persecution in Germany 1933-45.\nHedgepeth, Sonja; Saidel, Rochelle (2010). Sexual Violence against Jewish Women during the Holocaust.\nPeukert, Detlev (1994). "The Genesis of the \'Final Solution\' from the Spirit of Science". In Thomas Childers; Jane Caplan (eds.). Reevaluating the Third Reich. New York: Holmes & Meier. pp. 234–252. ISBN 0-8419-1178-9.\nRees, Laurence (2017). The Holocaust: A New History. London: Viking Press. ISBN 978-1610398442.\nAméry, Jean (1980). At the Mind\'s Limits: Contemplations by a Survivor on Auschwitz and its Realities.\nBlitz Konig, Nanette (2018). Holocaust Memoirs of a Bergen-Belsen Survivor and Classmate of Anne Frank. Amsterdam Publishers. ISBN 9789492371614.\nDittman, Anita (2005). Trapped in Hitler\'s Hell. ISBN 0-9721512-8-1.\nGerrard, Mady. Full Circle. KLPM. ISBN 978-0955865008.\nKogon, Eugen (1974). Der SS-Staat. Das System der deutschen Konzentrationslager (in German).\nRittner, Carol; Roth, John K. (1998). Different Voices: Women and the Holocaust.\nStojka, Ceija (1988). We Live in Seclusion: The Memories of a Romni.\nSteinberg, Manny (2014). Outcry: Holocaust Memoirs. Amsterdam Publishers. ISBN 978-9-082103137.\nWetzler, Alfréd (2007). Escape from Hell: The True Story of the Auschwitz Protocol. Berghahn Books.\nWinter, Walter (2004). Winter Time: Memoirs of a German Sinto who Survived Auschwitz.\nCzech, Danuta (1999). Auschwitz Chronicle: 1939-1945.\nDean, Martin (1999). Collaboration in the Holocaust: Crimes of the Local Police in Belorussia and Ukraine.\nFings, Karola; Kenrick, Donald, eds. (1999). The Gypsies During the Second World War.\nHogan, David J.; Aretha, David, eds. (2000). The Holocaust Chronicle: A History in Words and Pictures. Lincolnwood, IL: Publications International.\nPressac, Jean-Claude (1989). Auschwitz: Technique and operation of the gas chambers.\nAgamben, Giorgio (1999). Remnants of Auschwitz: The Witness and the Archive.\nBloxham, Donald (2009). The Final Solution: A Genocide.\nLawson, Tom (2010). Debates on the Holocaust. University of Manchester Press.\nLeff, Laurel (2005). Buried By The Times: The Holocaust And America\'s Most Important Newspaper. Cambridge University Press. ISBN 0-521-81287-9.\nMason, Timothy. "Intention and Explanation: A Current Controversy about the Interpretation of National Socialism". In Marrus, Michael R. (ed.). The Nazi Holocaust Part 3, The "Final Solution": The Implementation of Mass Murder. Vol. 1. Westpoint, CT: Mecler. pp. 3–20.\nNiewyk, Donald L. (1992). Holocaust: Problems & Perspective of Interpretation.'
}
-]
+];
diff --git a/openlibrary/components/MergeUI.vue b/openlibrary/components/MergeUI.vue
index ff56fcd9913..0a0ced8c1c8 100644
--- a/openlibrary/components/MergeUI.vue
+++ b/openlibrary/components/MergeUI.vue
@@ -52,13 +52,13 @@