Skip to content

Commit 30e7f4d

Browse files
merging all conflicts
2 parents 61b1820 + e85b71d commit 30e7f4d

9 files changed

Lines changed: 47 additions & 21 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"next-remote-watch": "^1.0.0",
3737
"parse-numeric-range": "^1.2.0",
3838
"react": "^0.0.0-experimental-16d053d59-20230506",
39-
"react-collapsed": "npm:@gaearon/react-collapsed@3.1.0-forked.1",
39+
"react-collapsed": "4.0.4",
4040
"react-dom": "^0.0.0-experimental-16d053d59-20230506",
4141
"remark-frontmatter": "^4.0.1",
4242
"remark-gfm": "^3.0.1"

src/components/Layout/Sidebar/SidebarRouteTree.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {useRef, useLayoutEffect, Fragment} from 'react';
77
import cn from 'classnames';
88
import {useRouter} from 'next/router';
99
import {SidebarLink} from './SidebarLink';
10-
import useCollapse from 'react-collapsed';
10+
import {useCollapse} from 'react-collapsed';
1111
import usePendingRoute from 'hooks/usePendingRoute';
1212
import type {RouteItem} from 'components/Layout/getRouteMeta';
1313

src/components/Seo.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const deployedTranslations = [
2222
'zh-hans',
2323
'es',
2424
'fr',
25+
'ja',
2526
// We'll add more languages when they have enough content.
2627
// Please DO NOT edit this list without a discussion in the reactjs/react.dev repo.
2728
// It must be the same between all translations.

src/content/learn/typescript.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,11 @@ export default App = AppTSX;
282282

283283
</Sandpack>
284284

285+
<<<<<<< HEAD
285286
Cette technique fonctionne lorsque vous avez une valeur par défaut pertinente — mais il arrive que ça ne soit pas le cas, et que vous utilisiez alors `null` comme valeur par défaut. Le souci, c'est que pour satisfaire le système de typage, vous allez devoir explicitement passer à `createContext` un paramètre de type `ContextShape | null`.
287+
=======
288+
This technique works when you have a default value which makes sense - but there are occasionally cases when you do not, and in those cases `null` can feel reasonable as a default value. However, to allow the type-system to understand your code, you need to explicitly set `ContextShape | null` on the `createContext`.
289+
>>>>>>> e85b71de88a20cda9588f51f01d4a70e5cbe1cb4
286290
287291
Ça va complexifier votre code en vous forçant à éliminer le `| null` du type pour les consommateurs du contexte. Nous vous conseillons d'incorporer un *type guard* au sein de votre Hook personnalisé pour vérifier que la valeur existe bien, et lever une exception dans le cas contraire :
288292

@@ -457,4 +461,8 @@ Nous vous conseillons les ressources suivantes *(toutes en anglais, NdT)* :
457461

458462
- [L'antisèche React TypeScript](https://react-typescript-cheatsheet.netlify.app/) est une antisèche synthétique maintenue par la communauté pour utiliser TypeScript avec React, qui couvre pas mal de cas à la marge et aborde plus de sujets que cette page.
459463

464+
<<<<<<< HEAD
460465
- [Le forum communautaire Discord de TypeScript](https://discord.com/invite/typescript) est un super endroit où poser vos questions et obtenir de l'aide pour vos problèmes liés à TypeScript avec React.
466+
=======
467+
- [TypeScript Community Discord](https://discord.com/invite/typescript) is a great place to ask questions and get help with TypeScript and React issues.
468+
>>>>>>> e85b71de88a20cda9588f51f01d4a70e5cbe1cb4

src/content/reference/react/experimental_taintObjectReference.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ experimental_taintObjectReference(
6868

6969
<Pitfall>
7070

71+
<<<<<<< HEAD
7172
**Ne comptez pas sur le ternissement pour garantir la sécurité.** Ternir un objet n'empêche pas la fuite de toute donnée dérivée imaginable. Un clone de l'objet terni créera par exemple un objet intact. L'utilisation de données d'un objet terni (ex. `{secret: taintedObj.secret}`) crée une nouvelle valeur, ou un nouvel objet, qui ne sera pas terni·e. Le ternissement est une couche de protection, mais une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
73+
=======
74+
**Do not rely on just tainting for security.** Tainting an object doesn't prevent leaking of every possible derived value. For example, the clone of a tainted object will create a new untained object. Using data from a tainted object (e.g. `{secret: taintedObj.secret}`) will create a new value or object that is not tainted. Tainting is a layer of protection; a secure app will have multiple layers of protection, well designed APIs, and isolation patterns.
75+
>>>>>>> e85b71de88a20cda9588f51f01d4a70e5cbe1cb4
7276
7377
</Pitfall>
7478

src/content/reference/react/experimental_taintUniqueValue.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,11 @@ Dans le code ci-dessus, la constante`password` est ternie. Puis `password` sert
128128

129129
On obtiendrait le même résultat avec d'autres façons de dériver de nouvelles valeurs à partir de valeurs ternies, telles que la concaténation de chaîne, leur encodage en Base 64 ou l'extraction d'une portion de la chaîne.
130130

131+
<<<<<<< HEAD
131132
Le ternissement ne vous protège que contre les bévues simples lorsqu'une valeur sensible est explicitement passée à un Composant Client. Des appels erronés de `taintUniqueValue`, comme le fait de recourir à un stockage global hors de React, sans l'objet de durée de vie associée, peuvent entraîner la perte du ternissement de la valeur. Le ternissement est une couche de protection, mais une appli sécurisée aura plusieurs couches de protection complémentaires, des API soigneusement conçues et des mécanismes d'isolation en place.
133+
=======
134+
Tainting only protects against simple mistakes like explictly passing secret values to the client. Mistakes in calling the `taintUniqueValue` like using a global store outside of React, without the corresponding lifetime object, can cause the tainted value to become untainted. Tainting is a layer of protection; a secure app will have multiple layers of protection, well designed APIs, and isolation patterns.
135+
>>>>>>> e85b71de88a20cda9588f51f01d4a70e5cbe1cb4
132136
133137
</Pitfall>
134138

src/content/reference/react/useSyncExternalStore.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ L'instantané actuel de la valeur issue de la source, que vous pouvez utiliser p
5757
5858
* Si une fonction `subscribe` différente est passée lors d'un nouveau rendu, React se réabonnera à la source de données en utilisant cette nouvelle fonction `subscribe`. Vous pouvez éviter ça en déclarant `subscribe` hors du composant.
5959
60+
* If the store is mutated during a [non-blocking transition update](/reference/react/useTransition), React will fall back to performing that update as blocking. Specifically, React will call `getSnapshot` a second time just before applying changes to the DOM. If it returns a different value than when it was called originally, React will restart the transition update from scratch, this time applying it as a blocking update, to ensure that every component on screen is reflecting the same version of the store.
61+
62+
* It's not recommended to _suspend_ a render based on a store value returned by `useSyncExternalStore`. The reason is that mutations to the external store cannot be [marked as non-blocking transition updates](/reference/react/useTransition), so they will trigger the nearest [`Suspense` fallback](/reference/react/Suspense), replacing already-rendered content on screen with a loading spinner, which typically makes a poor UX.
63+
64+
For example, the following are discouraged:
65+
66+
```js
67+
const LazyProductDetailPage = lazy(() => import('./ProductDetailPage.js'));
68+
69+
function ShoppingApp() {
70+
const selectedProductId = useSyncExternalStore(...);
71+
72+
// ❌ Calling `use` with a Promise dependent on `selectedProductId`
73+
const data = use(fetchItem(selectedProductId))
74+
75+
// ❌ Conditionally rendering a lazy component based on `selectedProductId`
76+
return selectedProductId != null ? <LazyProductDetailPage /> : <FeaturedProducts />;
77+
}
78+
```
79+
6080
---
6181
6282
## Utilisation {/*usage*/}

src/sidebarReference.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,13 @@
130130
},
131131
{
132132
"title": "experimental_taintObjectReference",
133-
"path": "/reference/react/experimental_taintObjectReference"
133+
"path": "/reference/react/experimental_taintObjectReference",
134+
"canary": true
134135
},
135136
{
136137
"title": "experimental_taintUniqueValue",
137-
"path": "/reference/react/experimental_taintUniqueValue"
138+
"path": "/reference/react/experimental_taintUniqueValue",
139+
"canary": true
138140
}
139141
]
140142
},

yarn.lock

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4797,11 +4797,6 @@ path-type@^4.0.0:
47974797
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
47984798
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
47994799

4800-
performance-now@^2.1.0:
4801-
version "2.1.0"
4802-
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
4803-
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
4804-
48054800
periscopic@^3.0.0:
48064801
version "3.0.4"
48074802
resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1"
@@ -5284,13 +5279,6 @@ queue-microtask@^1.2.2:
52845279
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
52855280
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
52865281

5287-
raf@^3.4.1:
5288-
version "3.4.1"
5289-
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
5290-
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
5291-
dependencies:
5292-
performance-now "^2.1.0"
5293-
52945282
range-parser@~1.2.1:
52955283
version "1.2.1"
52965284
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
@@ -5306,12 +5294,11 @@ raw-body@2.5.1:
53065294
iconv-lite "0.4.24"
53075295
unpipe "1.0.0"
53085296

5309-
"react-collapsed@npm:@gaearon/react-collapsed@3.1.0-forked.1":
5310-
version "3.1.0-forked.1"
5311-
resolved "https://registry.yarnpkg.com/@gaearon/react-collapsed/-/react-collapsed-3.1.0-forked.1.tgz#b287b81fc2af2971d7d7b523dc40b6cf116822ac"
5312-
integrity sha512-QkW55Upl4eeOtnDMOxasafDtDwaF+DpYKvHq8KZoNz9P477iUH8Ik1YFYuqtI7UA8mHm1/z66LD678dZCXwEEg==
5297+
react-collapsed@4.0.4:
5298+
version "4.0.4"
5299+
resolved "https://registry.yarnpkg.com/react-collapsed/-/react-collapsed-4.0.4.tgz#4c6bce3a15286d43e95b6730ad70ec387a54caa9"
5300+
integrity sha512-8avvmnQxDYTgGZYVP9+3Z7doomxVEBoCkukpTmUHEIrAYvELZ5jNNfYCt/hCpHB6GmQbzZoDmnDupjsnQVgcCQ==
53135301
dependencies:
5314-
raf "^3.4.1"
53155302
tiny-warning "^1.0.3"
53165303

53175304
react-devtools-inline@4.4.0:

0 commit comments

Comments
 (0)