You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/1-intro/article.md
+37Lines changed: 37 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,10 @@
1
1
# Eine Einführung in JavaScript
2
2
3
+
<<<<<<< HEAD
3
4
Mal sehen, was das Besondere an JavaScript ist, was wir damit erreichen können und welche anderen Technologien gut damit umgehen.
5
+
=======
6
+
Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it.
7
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
4
8
5
9
## Was ist JavaScript?
6
10
@@ -24,11 +28,19 @@ Der Browser verfügt über eine eingebettete Engine, die manchmal auch als "Java
24
28
25
29
Verschiedene Engines haben unterschiedliche "Kodnamen". Zum Beispiel:
26
30
31
+
<<<<<<< HEAD
27
32
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome und Opera.
28
33
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
29
34
- ...Es existieren auch noch andere Kodnamen wie "Trident" und "Chakra" für verschiedene Versionen von IE, "ChakraCore" für Microsoft Edge, "Nitro" und "SquirrelFish" für Safari, usw.
30
35
31
36
Die obigen Begriffe sind gut zu merken, da sie in Entwicklerartikeln im Internet verwendet werden. Wir werden sie auch benutzen. Wenn zum Beispiel "ein Feature X von V8 unterstützt wird", dann funktioniert es wahrscheinlich in Chrome und Opera.
37
+
=======
38
+
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge.
39
+
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
40
+
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
41
+
42
+
The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge.
43
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
32
44
33
45
```smart header="Wie funktioniert die Engine?"
34
46
@@ -59,7 +71,11 @@ So ist beispielsweise In-Browser JavaScript in der Lage:
59
71
60
72
## Was kann JavaScript im Browser nicht tun?
61
73
74
+
<<<<<<< HEAD
62
75
Die Fähigkeiten von JavaScript im Browser sind aus Gründen der Sicherheit des Benutzers eingeschränkt. Ziel ist es, zu verhindern, dass eine bösartige Webseite auf private Informationen zugreift oder die Daten des Benutzers schädigt.
76
+
=======
77
+
JavaScript's abilities in the browser are limited for the sake of a user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
78
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
63
79
64
80
Beispiele für solche Beschränkungen sind:
65
81
@@ -85,9 +101,15 @@ Solche Einschränkungen bestehen nicht, wenn JavaScript außerhalb des Browsers,
85
101
Es gibt mindestens *drei* großartige Dinge über JavaScript:
86
102
87
103
```compare
104
+
<<<<<<< HEAD
88
105
+ Volle integration in HTML und CSS.
89
106
+ Einfache Dinge werden einfach gemacht.
90
107
+ Unterstützung von allen gängigen Browsern und standardmäßig aktiviert.
108
+
=======
109
+
+ Full integration with HTML/CSS.
110
+
+ Simple things are done simply.
111
+
+ Supported by all major browsers and enabled by default.
112
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
91
113
```
92
114
JavaScript ist die einzige Browser-Technologie, die diese drei Dinge vereint.
93
115
@@ -107,15 +129,30 @@ Moderne Werkzeuge machen die Transpilation sehr schnell und transparent und erla
107
129
108
130
Beispiele für solche Sprachen sind:
109
131
132
+
<<<<<<< HEAD
110
133
-[CoffeeScript](http://coffeescript.org/) ist ein "syntactic sugar" für JavaScript. Es führt eine kürzere Syntax ein, was uns erlaubt, klareren und präziseren Code zu schreiben. Usually, Ruby devs like it.
111
134
-[TypeScript](http://www.typescriptlang.org/) ist darauf konzentriert "strict data typing" hinzuzufügen. TypeScript verfolg das Ziel den Entwicklungsprozess und den Support für komplexe Systeme zu vereinfachen. Die Sprache wurde von Microsoft entwickelt.
112
135
-[Flow](http://flow.org/) fügt auch "data typing" hinzu, aber auf eine andere Art und Weise. Sie wurde von Facebook entwickelt.
113
136
-[Dart](https://www.dartlang.org/) ist eine eigenständige Sprache, die eine eigene Engine hat, die in Nicht-Browser-Umgebungen (wie z.B. mobilen Anwendungen) läuft, aber auch in JavaScript umgesetzt werden kann. Sie wurde von Google entwickelt.
137
+
=======
138
+
-[CoffeeScript](http://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
139
+
-[TypeScript](http://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
140
+
-[Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
141
+
-[Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
142
+
-[Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
143
+
-[Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
144
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
114
145
115
146
Es gibt noch mehr. Auch wenn wir eine der transpilierten Sprachen verwenden sollten wir auch JavaScript trozdem kennen. Es ist wichtig zu verstehen, was im Hintergrund passiert und was wir eigentlich tun.
116
147
117
148
## Zusammenfassung
118
149
150
+
<<<<<<< HEAD
119
151
- JavaScript wurde ursprünglich als reine Browser-Sprache entwickelt, wird aber mittlerweile auch in vielen anderen Umgebungen eingesetzt.
120
152
- Heute hat JavaScript eine einzigartige Position als die am weitesten verbreitete Browsersprache mit voller Integration in HTML/CSS.
121
153
- Es gibt viele Sprachen, die auf JavaScript "transponiert" werden und bestimmte Funktionen bieten. Es wird empfohlen, sich diese zumindest kurz anzuschauen, nachdem man JavaScript beherrscht.
154
+
=======
155
+
- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well.
156
+
- Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS.
157
+
- There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript.
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/2-manuals-specifications/article.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,20 +13,32 @@ Eine neue Spezifikationsversion wird jedes Jahr veröffentlicht. In der Zwischen
13
13
14
14
Um mehr über die neuen bleeding-edge features, einschliesslich derjendigen, die "fast Standard" sind ("stage 3" genannt), siehe Vorschläge unter <https://github.com/tc39/proposals>.
15
15
16
+
<<<<<<< HEAD
16
17
Wenn du für den Browser entwickeln, dann gibt es noch weitere Spezifikationen, die im [zweiten Teil](info:browser-environment) des Tutorials behandelt werden.
18
+
=======
19
+
Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial.
20
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
17
21
18
22
## Handbücher
19
23
24
+
<<<<<<< HEAD
20
25
-**MDN (Mozilla) JavaScript Reference** ist ein Handbuch mit Beispielen und anderen Informationen. Es ist grossartig, sich über einzelne Sprachfunktionen, Methoden etc. ausführlich zu informieren.
26
+
=======
27
+
-**MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc.
28
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
21
29
22
30
Man kann es unter <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference> finden.
23
31
32
+
<<<<<<< HEAD
24
33
Obwohl es oft am besten ist, stattdessen eine Internetsuche zu verwenden. Benutze einfach "MDN [Begriff]" in der Anfrage, z.B. <https://google.com/search?q=MDN+parseInt> um nach der `parseInt` Funktion zu suchen.
25
34
26
35
27
36
-**MSDN** – Microsoft Handbuch mit vielen Informationen, einschließlich JavaScript (oft als JScript bezeichnet). Wenn man etwas speziell für den Internet Explorer benötigt, sollte man besser dorthin gehen: <http://msdn.microsoft.com/>.
28
37
29
38
Wir können auch eine Internetsuche mit Phrasen wie "RegExp MSDN" oder "RegExp MSDN jscript" verwenden.
39
+
=======
40
+
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for `parseInt` function.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/01-hello-world/article.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,11 @@ Als erstes, lass uns sehen wie wir ein Skript einer Webseite hinzufügen. Für e
9
9
10
10
## Der "script"-Tag
11
11
12
+
<<<<<<< HEAD
12
13
JavaScript-Programme können an jeder beliebigen Stelle eines HTML-Dokuments mit Hilfe des `<script>`-Tag eingefügt werden.
14
+
=======
15
+
JavaScript programs can be inserted almost anywhere into an HTML document using the `<script>` tag.
16
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
13
17
14
18
Beispielsweise:
15
19
@@ -73,7 +77,11 @@ Skript-Dateien werden zu HTML mit dem `src`-Attribute hinzugefügt:
73
77
<scriptsrc="/pfad/zum/script.js"></script>
74
78
```
75
79
80
+
<<<<<<< HEAD
76
81
Hier ist `/pfad/zum/script.js` ein absoluter Pfad zu dem Skript, aus dem Wurzelverzeichnis der Seite. Auch ein relativer Pfad der aktuellen Seite kann angeben werden. Beispielsweise, `src="script.js"` würde eine Datei `"script.js"` im aktuellen Verzeichnis bedeuten.
82
+
=======
83
+
Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"`, just like `src="./script.js"`, would mean a file `"script.js"` in the current folder.
84
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
77
85
78
86
Außerdem können wir auch eine komplette URL angeben. Beispielsweise:
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/02-structure/article.md
+35-2Lines changed: 35 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,7 +46,11 @@ alert(3 +
46
46
+2);
47
47
```
48
48
49
+
<<<<<<< HEAD
49
50
Der Code gibt `6` aus, da JavaScript hier keine Semikolons einfügt. Es ist intuitiv klar, dass, wenn die Zeile mit einem Pluszeichen `"+"` endet, es sich um einen "unvollständigen Ausdruck" handelt, sodass das Semikolon nicht erforderlich ist. Und in diesem Fall funktioniert das wie vorgesehen.
51
+
=======
52
+
The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so a semicolon there would be incorrect. And in this case, that works as intended.
53
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
50
54
51
55
**Es gibt jedoch Situationen, in denen JavaScript ein Semikolon nicht annimmt, wenn es wirklich benötigt wird.**
52
56
@@ -56,19 +60,31 @@ Fehler, die in solchen Fällen auftreten, sind schwer zu finden und zu beheben.
56
60
Wenn du ein konkretes Beispiel für einen solchen Fehler sehen möchten, lies den folgenden Code:
57
61
58
62
```js run
59
-
[1, 2].forEach(alert)
63
+
alert("Hello");
64
+
65
+
[1, 2].forEach(alert);
60
66
```
61
67
68
+
<<<<<<< HEAD
62
69
Über die Bedeutung der Klammern `[]` und `forEach` muss noch nicht nachgedacht werden. Wir werden sie später studieren. Denk vorerst nur an das Ergebnis des Codes: Es zeigt `1`, dann `2`.
63
70
64
71
Fügen wir nun vor dem Code einen `alert` ein und beenden ihn *nicht* mit einem Semikolon:
65
72
66
73
```js run no-beautify
67
74
alert("Es wird ein Fehler auftreten")
75
+
=======
76
+
No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of running the code: it shows `Hello`, then `1`, then `2`.
68
77
69
-
[1, 2].forEach(alert)
78
+
Now let's remove the semicolon after the `alert`:
79
+
80
+
```js run no-beautify
81
+
alert("Hello")
82
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
83
+
84
+
[1, 2].forEach(alert);
70
85
```
71
86
87
+
<<<<<<< HEAD
72
88
Wenn wir nun den Code ausführen, wird nur der erste `alert` angezeigt und dann haben wir einen Fehler!
73
89
74
90
Aber alles ist wieder in Ordnung, wenn wir nach `alert` ein Semikolon einfügen:
@@ -90,6 +106,23 @@ alert("Es wird ein Fehler auftreten")[1, 2].forEach(alert)
90
106
```
91
107
92
108
Aber es sollten zwei getrennte Anweisungen sein, nicht eine. Eine solche Verschmelzung ist in diesem Fall einfach falsch, daher der Fehler. Dies kann auch in anderen Situationen auftreten.
109
+
=======
110
+
The difference compared to the code above is only one character: the semicolon at the end of the first line is gone.
111
+
112
+
If we run this code, only the first `Hello` shows (and there's an error, you may need to open the console to see it). There are no numbers any more.
113
+
114
+
That's because JavaScript does not assume a semicolon before square brackets `[...]`. So, the code in the last example is treated as a single statement.
115
+
116
+
Here's how the engine sees it:
117
+
118
+
```js run no-beautify
119
+
alert("Hello")[1, 2].forEach(alert);
120
+
```
121
+
122
+
Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly.
123
+
124
+
This can happen in other situations also.
125
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
93
126
````
94
127
95
128
Es wird empfohlen, Semikolons zwischen Anweisungen zu setzen, auch wenn diese durch Zeilenumbrüche getrennt sind. Diese Regel wird von der Community weitgehend übernommen. Lass uns noch einmal festhalten -- es ist möglich, Semikolons die meiste Zeit wegzulassen. Aber es ist sicherer -- besonders für Anfänger -- sie zu benutzen.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/04-variables/2-declare-variables/solution.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,11 @@ Das ist einfach:
6
6
let ourPlanetName ="Earth";
7
7
```
8
8
9
+
<<<<<<< HEAD
9
10
Beachte, wir könnten einen kürzeren Namen `planet` verwenden, aber es könnte nicht offensichtlich sein, auf welchen Planeten er sich bezieht. Es ist schön, etwas ausführlicher zu sein. Zumindest bis die Variable nicht zu lang ist.
11
+
=======
12
+
Note, we could use a shorter name `planet`, but it might not be obvious what planet it refers to. It's nice to be more verbose. At least until the variable isNotTooLong.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+28-1Lines changed: 28 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,9 +64,13 @@ Spezielle numerische Werte gehören formal zum Typ "number". Natürlich sind sie
64
64
65
65
Mehr über das Arbeiten mit Zahlen erfahren wir in diesem Kapitel <info:number>.
66
66
67
-
## BigInt
67
+
## BigInt [#bigint-type]
68
68
69
+
<<<<<<<HEAD
69
70
In JavaScript kann der Typ "Zahl" keine ganzzahligen Werte darstellen, die größer als <code>(2<sup>53</sup>-1)</code> (das ist `9007199254740991`) oder kleiner als <code>-(-2<sup>53</sup>-1)</code> für Negative sind. Es handelt sich um eine technische Einschränkung, die durch ihre interne Darstellung bedingt ist.
71
+
=======
72
+
In JavaScript, the "number" type cannot represent integer values larger than <code>(2<sup>53</sup>-1)</code> (that's `9007199254740991`), or less than <code>-(2<sup>53</sup>-1)</code> for negatives. It's a technical limitation caused by their internal representation.
73
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
70
74
71
75
Für die meisten Zwecke reicht das völlig aus, aber manchmal brauchen wir wirklich große Zahlen, z.B. für die Kryptographie oder Zeitstempel mit Mikrosekunden-Genauigkeit.
Da `BigInt`-Zahlen selten benötigt werden, behandeln wir sie hier nicht, sondern widmen ihnen ein eigenes Kapitel <info:bigint>. Lies es, wenn du so große Zahlen brauchst.
83
87
88
+
<<<<<<<HEAD
84
89
```smart header="Compatability issues"
85
90
Im Moment wird `BigInt` in Firefox/Chrome/Edge unterstützt, aber nicht in Safari/IE.
91
+
=======
92
+
93
+
```smart header="Compatibility issues"
94
+
Right now, `BigInt` is supported in Firefox/Chrome/Edge/Safari, but not inIE.
95
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
86
96
```
87
97
98
+
You can check [*MDN* BigInt compatibility table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility) to know which versions of a browser are supported.
99
+
88
100
## String
89
101
90
102
Ein String in JavaScript muss in Anführungszeichen gesetzt werden.
@@ -127,7 +139,11 @@ In diesem Kapitel werden wir uns eingehender mit Strings befassen <info:string>.
127
139
```smart header="Es gibt keinen *Zeichen*-Typ."
128
140
In einigen Sprachen gibt es einen speziellen "Zeichen"-Typ für ein einzelnes Zeichen. In der C-Sprache und in Java heißt er beispielsweise "char".
129
141
142
+
<<<<<<<HEAD
130
143
In JavaScript gibt es so einen Typ nicht. Es gibt nur einen Typ:`string`. Eine Zeichenfolge kann aus nur einem oder mehreren Zeichen bestehen.
144
+
=======
145
+
In JavaScript, there is no such type. There's only one type: `string`. A string may consist of zero characters (be empty), one character or many of them.
146
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
131
147
```
132
148
133
149
## Boolean (logische Werte)
@@ -254,6 +270,7 @@ Die letzten drei Zeilen bedürfen möglicherweise einer zusätzlichen Erläuteru
254
270
255
271
Es gibt 8 grundlegende Datentypen in JavaScript.
256
272
273
+
<<<<<<< HEAD
257
274
- `number` für Zahlen jeglicher Art: Ganzzahl oder Gleitkommazahl, ganze Zahlen sind auf ±2<sup>53</sup> begrenzt.
258
275
- `bigint` steht für ganze Zahlen beliebiger Länge.
259
276
- `string` für Zeichenketten. Eine String kann aus null oder mehreren Zeichen bestehen. Es gibt keine separaten Einzelzeichentyp.
@@ -262,6 +279,16 @@ Es gibt 8 grundlegende Datentypen in JavaScript.
262
279
- `undefined` für nicht zugewiesene Werte -- ein eigenständiger Typ mit einem einzelnen Wert `undefined`.
263
280
- `object` für komplexere Datenstrukturen.
264
281
- `symbol` für eindeutige Kennungen.
282
+
=======
283
+
- `number` for numbers of any kind: integer or floating-point, integers are limited by <code>±(2<sup>53</sup>-1)</code>.
284
+
- `bigint` is for integer numbers of arbitrary length.
285
+
- `string` for strings. A string may have zero or more characters, there's no separate single-character type.
286
+
-`boolean`for`true`/`false`.
287
+
-`null`for unknown values -- a standalone type that has a single value `null`.
288
+
-`undefined`for unassigned values -- a standalone type that has a single value `undefined`.
289
+
-`object`for more complex data structures.
290
+
-`symbol`for unique identifiers.
291
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
265
292
266
293
Mit dem Operator `typeof` können wir sehen, welcher Typ in einer Variablen gespeichert ist.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/06-alert-prompt-confirm/article.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,11 @@ Da wir den Browser als unsere Demo-Umgebung verwenden, wollen wir einige Funktio
4
4
5
5
## alert
6
6
7
+
<<<<<<< HEAD
7
8
Diese haben wir bereits gesehen. Es zeigt eine Meldung an und wartet darauf, dass der Benutzer "OK" drückt.
9
+
=======
10
+
This one we've seen already. It shows a message and waits for the user to press "OK".
11
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
8
12
9
13
Zum Beispiel:
10
14
@@ -30,8 +34,13 @@ Es wir ein modales Fenster mit einer Meldung angezeigt, ein Eingabefeld für den
30
34
`default`
31
35
: Ein optionaler zweiter Parameter, der vor-befüllte Wert für das Eingabefeld.
32
36
37
+
<<<<<<< HEAD
33
38
```smart header="Eckige Klammer in der Syntax `[...]`"
34
39
Die eckigen Klammern um `default` in der obigen Syntax bedeuten, dass der Parameter optional, nicht erforderlich ist.
40
+
=======
41
+
```smart header="The square brackets in syntax `[...]`"
42
+
The square brackets around `default` in the syntax above denote that the parameter is optional, not required.
43
+
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
35
44
```
36
45
37
46
Der Besucher kann etwas in das Eingabefeld eingeben und OK drücken. Dann erhalten wir diesen Text im `Ergebnis`. Oder er kann die Eingabe beenden, indem er Abbrechen drückt oder `key:Esc` drückt, dann erhalten wir `Null` als `Ergebnis`.
0 commit comments