status-mobile/doc
Icaro Motta b9890a9d44
Upgrade shadow-cljs and ClojureScript (#15417)
This commit upgrades Shadow CLJS from 2.11.16 (released on Feb/21) to latest
2.25.0 (Jul/23), so ~1.5 years worth of upgrades. By upgrading shadow we
can finally use the latest major Clojure version 1.11.x.

Why upgrade shadow?

- Shadow CLJS controls the ClojureScript version we can use. In order to use the
  latest major Clojure version we must upgrade Shadow CLJS.

- Shadow CLJS releases new versions very frequently, and if you take a look at
  its changelog https://github.com/thheller/shadow-cljs/blob/master/CHANGELOG.md, you'll see
  it had tons and tons of bug fixes over the years. I hope some of them help
  improve the DX for certain contributors who recently reported issues with
  it.

- Clojure 1.11 brings new features, bug fixes and even performance improvements
  (although I think the performance mostly impacts Clojure on the JVM). See the
  changelog https://github.com/clojure/clojure/blob/master/changes.md#changes-to-clojure-in-version-1110

Things that can be beneficial to us, or are interesting nonetheless:

- New :as-alias to be used in require, which is like :as but does not require
  the namespace to load. This means namespaced keywords using :as-alias can't
  cause circular dependency errors. This feature would very useful if we used
  namespaced keywords, but we don't, so...
  https://github.com/clojure/clojure/blob/master/changes.md#22-as-alias-in-require
- New macros run-test and run-test-var to run single test with fixtures and
  report.
- New iteration function, useful for processing paginated data.
  https://www.abhinavomprakash.com/posts/clojure-iteration/
- New update-keys function: applies a function to every key in a map.
- New update-vals function: applies a function to every value in a map.

Examples for update-vals and update-keys. They should perform better than the
common reduce-kv approach since they use a transient data structure.

    (let [m {:a 1 :b 2}]
      (update-vals m inc)) ; => {:a 2, :b 3}
    
    (let [m {:a 1 :b 2}]
      (update-keys m name)) ; => {"a" 1, "b" 2}

Why change namespaces within __tests__ directories?

Any namespace with the word --tests-- throws an error, like the one below. I
didn't bother investigating why, so I changed the guidelines to reflect the new
convention. It's probably related to the double dashes in the name.

    Namespace quo2.components.dividers.--tests--.divider-label-component-spec has a
    segment starting with an invalid JavaScript identifier at line 1
2023-07-28 13:40:54 -03:00
..
decisions Lint and fix missing trailing newlines (#16445) 2023-07-04 19:40:13 +00:00
images chore: add doc on pixel perfection (#16539) 2023-07-12 03:31:14 -07:00
sign_in
README.md chore: add doc on pixel perfection (#16539) 2023-07-12 03:31:14 -07:00
codebase-structure-and-guidelines.md Separate doc with debug tips (#15849) 2023-05-10 10:38:59 +01:00
component-tests-overview.md feat: add in-app notification, refactor toast (#15642) 2023-04-17 14:01:25 +08:00
debugging.md Separate doc with debug tips (#15849) 2023-05-10 10:38:59 +01:00
dependencies.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
export-icons.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
fdroid.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
how-to-launch-e2e.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
ide-setup.md Update broken `Status development` link in `ide-setup.md` (#16391) 2023-06-26 16:43:58 +05:30
merging-pr-process.md Added PR Review Policy (#16280) 2023-06-15 23:02:50 +01:00
new-guidelines.md Upgrade shadow-cljs and ClojureScript (#15417) 2023-07-28 13:40:54 -03:00
patching.md Information about patching 3rd parties (#16249) 2023-06-12 13:17:48 +01:00
pipeline_process.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
pixel-perfection.md chore: add doc on pixel perfection (#16539) 2023-07-12 03:31:14 -07:00
post-mortem.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
pr-review-policy.md Added PR Review Policy (#16280) 2023-06-15 23:02:50 +01:00
release-checklist.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
release-guide.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00
starting-guide.md Update default iOS Simulator (#16289) 2023-06-15 23:37:11 +05:30
testing.md ci: add component test (#15071) 2023-02-21 13:42:33 +08:00
troubleshooting.md Documentation updated (#14933) 2023-01-31 12:06:29 +00:00