{:ns-groups [{:pattern "frontend.components.*" :name all-components}]

 :config-in-ns
 ;; :used-underscored-binding is turned off for components because of false positive
 ;; for rum/defcs and _state.
 {all-components {:linters {:used-underscored-binding {:level :off}}}
  ;; false positive with match/match and _
  frontend.handler.paste {:linters {:used-underscored-binding {:level :off}}}
  frontend.db {:linters {:aliased-namespace-symbol
                         {:exclude [frontend.db.conn frontend.db.react]}}}}

 :linters
 {:path-invalid-construct/string-join {:level :info}
  :regex-checks/double-escaped-regex {:level :warning}
  :aliased-namespace-symbol {:level :warning}
  ;; Disable until it doesn't trigger false positives on rum/defcontext
  :earmuffed-var-not-dynamic {:level :off}
  ;; Disable until we decide to use conj! as recommended in docs
  :unused-value {:level :off}
  :unresolved-symbol {:exclude [goog.DEBUG
                                goog.string.unescapeEntities
                                ;; TODO:lint: Fix when fixing all type hints
                                object]}

  :unused-namespace {:level :warning
                     :exclude [logseq.db.frontend.entity-plus]}

  ;; TODO:lint: Remove node-path excludes once we have a cleaner api
  :unresolved-var {:exclude [frontend.util/node-path.basename
                             frontend.util/node-path.dirname
                             frontend.util/node-path.join
                             frontend.util/node-path.extname
                             frontend.util/node-path.name
                             ;; frontend.pubsub/def-mult-or-pub generate vars clj-kondo cannot resolve
                             frontend.pubsub]}

  :consistent-alias
  {:aliases {cljs.reader reader
             cljs-time.core t
             cljs-time.coerce tc
             datascript.core d
             datascript.transit dt
             datascript.db ddb
             electron.ipc ipc
             electron.utils utils
             "/electron/utils" js-utils
             frontend.commands commands
             frontend.components.block.macros block-macros
             frontend.components.query query
             frontend.components.query.result query-result
             frontend.components.class class-component
             frontend.components.property property-component
             frontend.config config
             frontend.date date
             frontend.db db
             frontend.db-mixins db-mixins
             frontend.db.query-dsl query-dsl
             frontend.db.react react
             frontend.db.query-react query-react
             frontend.db.util db-utils
             frontend.diff diff
             frontend.encrypt encrypt
             frontend.extensions.sci sci
             frontend.format.mldoc mldoc
             frontend.format.block block
             frontend.fs fs
             frontend.fs.memory-fs memory-fs
             frontend.fs.capacitor-fs capacitor-fs
             frontend.fs.nfs nfs
             frontend.handler.extract extract
             frontend.handler.common common-handler
             frontend.handler.common.file file-common-handler
             frontend.handler.common.plugin plugin-common-handler
             frontend.handler.common.developer dev-common-handler
             frontend.handler.common.page page-common-handler
             frontend.handler.config config-handler
             frontend.handler.editor.property editor-property
             frontend.handler.events events
             frontend.handler.global-config global-config-handler
             frontend.handler.ui ui-handler
             frontend.handler.notification notification
             frontend.handler.page page-handler
             frontend.handler.db-based.editor db-editor-handler
             frontend.handler.db-based.page db-page-handler
             frontend.handler.db-based.property db-property-handler
             frontend.handler.db-based.property.util db-pu
             frontend.handler.file-based.page file-page-handler
             frontend.handler.file-based.property file-property-handler
             frontend.handler.file-based.page-property file-page-property
             frontend.handler.file-based.property.util property-util
             frontend.handler.file-based.recent file-recent-handler
             frontend.handler.file-based.repo file-repo-handler
             frontend.handler.plugin plugin-handler
             frontend.handler.plugin-config plugin-config-handler
             frontend.handler.property.file property-file
             frontend.handler.property.util pu
             frontend.handler.query.builder query-builder
             frontend.handler.repo repo-handler
             frontend.handler.repo-config repo-config-handler
             frontend.handler.route route-handler
             frontend.handler.search search-handler
             frontend.idb idb
             frontend.loader loader
             frontend.mixins mixins
             frontend.modules.outliner.ui ui-outliner-tx
             frontend.mobile.util mobile-util
             frontend.page page
             frontend.persist-db persist-db
             frontend.schema.handler.common-config common-config-schema
             frontend.search search
             frontend.state state
             frontend.template template
             frontend.test.helper test-helper
             frontend.ui ui
             frontend.util util
             frontend.util.clock clock
             frontend.util.drawer drawer
             frontend.util.page page-util
             frontend.util.property property
             frontend.util.persist-var persist-var
             frontend.util.text text-util
             frontend.util.url url-util
             frontend.util.thingatpt thingatpt
             frontend.worker.pipeline worker-pipeline
             frontend.worker.util worker-util
             frontend.worker.state worker-state
             frontend.worker.handler.page worker-page
             frontend.worker.handler.page.rename worker-page-rename
             frontend.worker.handler.file.util wfu
             frontend.worker.batch-tx batch-tx
             lambdaisland.glogi log
             logseq.common.config common-config
             logseq.common.graph common-graph
             logseq.common.date-time-util date-time-util
             logseq.common.path path
             logseq.common.util common-util
             logseq.common.util.page-ref page-ref
             logseq.common.util.block-ref block-ref
             logseq.common.util.macro macro-util
             logseq.db ldb
             logseq.db.frontend.content db-content
             logseq.db.frontend.inputs db-inputs
             logseq.db.frontend.order db-order
             logseq.db.frontend.property db-property
             logseq.db.frontend.property.build db-property-build
             logseq.db.frontend.property.type db-property-type
             logseq.db.frontend.property.util db-property-util
             logseq.db.frontend.entity-plus entity-plus
             logseq.db.frontend.rules rules
             logseq.db.frontend.schema db-schema
             logseq.db.frontend.validate db-validate
             logseq.db.sqlite.db sqlite-db
             logseq.db.sqlite.util sqlite-util
             logseq.graph-parser graph-parser
             logseq.graph-parser.text text
             logseq.graph-parser.db gp-db
             logseq.graph-parser.block gp-block
             logseq.graph-parser.mldoc gp-mldoc
             logseq.graph-parser.property gp-property
             logseq.outliner.core outliner-core
             logseq.outliner.op outliner-op
             logseq.outliner.pipeline outliner-pipeline
             logseq.outliner.datascript-report ds-report
             logseq.shui.ui shui
             medley.core medley
             "path" node-path
             promesa.core p}}

  :namespace-name-mismatch {:level :warning}
  :used-underscored-binding {:level :warning}}

 :hooks {:analyze-call {rum.core/defc hooks.rum/defc
                        rum.core/defcs hooks.rum/defcs
                        clojure.string/join hooks.path-invalid-construct/string-join
                        clojure.string/replace hooks.regex-checks/double-escaped-regex}}
 :lint-as {promesa.core/let clojure.core/let
           promesa.core/loop clojure.core/loop
           promesa.core/recur clojure.core/recur
           rum.core/defcc rum.core/defc
           rum.core/with-context clojure.core/let
           rum.core/defcontext clojure.core/def
           clojure.test.check.clojure-test/defspec clojure.core/def
           clojure.test.check.properties/for-all clojure.core/for
           ;; src/main
           frontend.namespaces/import-vars potemkin/import-vars
           ;; src/test
           frontend.test.helper/deftest-async clojure.test/deftest
           frontend.test.helper/with-reset cljs.test/async
           frontend.worker.rtc.idb-keyval-mock/with-reset-idb-keyval-mock cljs.test/async
           frontend.react/defc clojure.core/defn
           frontend.schema-register/defkeyword cljs.spec.alpha/def}
 :skip-comments true
 :output {:progress true}}
