// examples from https://github.com/prettier/prettier/issues/4125 const sha256 = (data) => crypto.createHash("sha256").update(data).digest("hex"); req.checkBody("id").isInt().optional(); req.checkBody("name").notEmpty().optional(); const x = moment().add(1, "day").valueOf(); // should stay on one line: const y = obj.foo(1).foo(2).foo(3); const z = obj.foo(-1).foo(import("2")).foo(!x).check(/[A-Z]/); // better on multiple lines: somePromise .then(format) .then((val) => doSomething(val)) .catch((err) => handleError(err)); // you can still force multi-line chaining with a comment: const sha256_2 = (data) => crypto // breakme .createHash("sha256") .update(data) .digest("hex"); // examples from https://github.com/prettier/prettier/pull/4765 if ($(el).attr("href").includes("/wiki/")) { } if ($(el).attr("href").includes("/wiki/")) { if ($(el).attr("xyz").includes("/whatever/")) { if ($(el).attr("hello").includes("/world/")) { } } } const parseNumbers = (s) => s.split("").map(Number).sort(); function palindrome(a, b) { return a.slice().reverse().join(",") === b.slice().sort().join(","); } // examples from https://github.com/prettier/prettier/issues/1565 d3.select("body") .selectAll("p") .data([1, 2, 3]) .enter() .style("color", "white"); Object.keys(props) .filter((key) => key in own === false) .reduce((a, key) => { a[key] = props[key]; return a; }, {}); point().x(4).y(3).z(6).plot(); assert.equal(this.$().text().trim(), "1000"); something() .then(() => doSomethingElse()) .then((result) => dontForgetThisAsWell(result)); db.branch( db.table("users").filter({ email }).count(), db.table("users").filter({ email: "a@b.com" }).count(), db.table("users").insert({ email }), db.table("users").filter({ email }), ); sandbox.stub(config, "get").withArgs("env").returns("dev"); const date = moment.utc(userInput).hour(0).minute(0).second(0); fetchUser(id).then(fetchAccountForUser).catch(handleFetchError); fetchUser(id) // .then(fetchAccountForUser) .catch(handleFetchError); // examples from https://github.com/prettier/prettier/issues/3107 function HelloWorld() { window.FooClient.setVars({ locale: getFooLocale({ page }), authorizationToken: data.token, }).initVerify("foo_container"); fejax .ajax({ url: "/verification/", dataType: "json", }) .then( (data) => { this.setState({ isLoading: false }); this.initWidget(data); }, (data) => { this.logImpression("foo_fetch_error", data); Flash.error(I18n.t("offline_identity.foo_issue")); }, ); } action$ .ofType(ActionTypes.SEARCHED_USERS) .map((action) => action.payload.query) .filter((q) => !!q) .switchMap((q) => Observable.timer(800) // debounce .takeUntil(action$.ofType(ActionTypes.CLEARED_SEARCH_RESULTS)) .mergeMap(() => Observable.merge( Observable.of(replace(`?q=${q}`)), ajax .getJSON(`https://api.github.com/search/users?q=${q}`) .map((res) => res.items) .map(receiveUsers), ), ), ); window.FooClient.setVars({ locale: getFooLocale({ page }), authorizationToken: data.token, }).initVerify("foo_container"); it("gets triggered by mouseenter", () => { const wrapper = shallow(); wrapper.dive().find(Button).prop(); }); const a1 = x.a(true).b(null).c(123); const a2 = x.d("").e(``).f(g); const a3 = x.d("").e(`${123}`).f(g); const a4 = x.h(i.j).k(l()).m([n, o]); class X { y() { const j = x.a(this).b(super.cde()).f(/g/).h(new i()).j(); } } // should break when call expressions get complex x.a() .b([c, [d, [e]]]) .f(); x.a() .b(c(d(e()))) .f(); x.a() .b(`${c(d())}`) .f(); xyz .a() .b() .c(a(a(b(c(d().p).p).p).p)); var l = base .replace(/^\w*:\/\//, "") .replace(/\/$/, "") .split("/").length;