From 726d3bf8dc6cb243b7c267b5a46fab772568e7c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 04:58:10 +0000 Subject: [PATCH 1/8] Bump minimatch from 3.0.4 to 3.1.2 Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2c2a525e..9482af0fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2502,9 +2502,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -5741,9 +5741,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" From a1159b71c0c9f6a71377e6682c784fff582615c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 05:00:23 +0000 Subject: [PATCH 2/8] Bump async from 2.6.3 to 2.6.4 Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9482af0fd..46518c1d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -309,9 +309,9 @@ } }, "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "dependencies": { "lodash": "^4.17.14" @@ -1954,7 +1954,7 @@ "node_modules/istanbul/node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, "node_modules/istanbul/node_modules/esprima": { @@ -4066,9 +4066,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -5321,7 +5321,7 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, "esprima": { From 88da9e56f92a4ee076a6a63ab7759fecb487e340 Mon Sep 17 00:00:00 2001 From: Keita Furui Date: Wed, 15 Feb 2023 11:11:18 +0900 Subject: [PATCH 3/8] hyperscript: handles shared empty attrs, fixes #2821 --- render/hyperscript.js | 2 +- render/tests/test-hyperscript.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/render/hyperscript.js b/render/hyperscript.js index 26ff753e3..0015b26eb 100644 --- a/render/hyperscript.js +++ b/render/hyperscript.js @@ -38,7 +38,7 @@ function execSelector(state, vnode) { vnode.tag = state.tag vnode.attrs = {} - if (!isEmpty(state.attrs) && !isEmpty(attrs)) { + if (!isEmpty(state.attrs)) { var newAttrs = {} for (var key in attrs) { diff --git a/render/tests/test-hyperscript.js b/render/tests/test-hyperscript.js index 59751f44a..fcf69d25d 100644 --- a/render/tests/test-hyperscript.js +++ b/render/tests/test-hyperscript.js @@ -580,6 +580,15 @@ o.spec("hyperscript", function() { o(nodeB.attrs.className).equals("b") o(nodeB.attrs.a).equals("b") }) + o("handles shared empty attrs (#2821)", function() { + var attrs = {} + + var nodeA = m(".a", attrs) + var nodeB = m(".b", attrs) + + o(nodeA.attrs.className).equals("a") + o(nodeB.attrs.className).equals("b") + }) o("doesnt modify passed attributes object", function() { var attrs = {a: "b"} m(".a", attrs) From ad9aa97d56ba6e6140f52fd971e97d481572dbca Mon Sep 17 00:00:00 2001 From: Matias Kinnunen Date: Sun, 12 Mar 2023 02:39:25 +0200 Subject: [PATCH 4/8] Fix typos in `stream()` docs (#2825) Co-authored-by: Claudia Meadows --- docs/stream.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/stream.md b/docs/stream.md index da1eac403..8e39af84b 100644 --- a/docs/stream.md +++ b/docs/stream.md @@ -462,7 +462,7 @@ Pending streams can be created by calling `stream()` with no parameters. var pending = stream() ``` -If a stream is dependent on more than one stream, any of its parent streams is in a pending state, the dependent streams is also in a pending state, and does not update its value. +If a stream is dependent on more than one stream and any of its parent streams is in a pending state, the dependent stream is also in a pending state, and does not update its value. ```javascript var a = stream(5) @@ -558,13 +558,13 @@ console.log(serialized) // logs 123 Unlike libraries like Knockout, Mithril.js streams do not trigger re-rendering of templates. Redrawing happens in response to event handlers defined in Mithril.js component views, route changes, or after [`m.request`](request.md) calls resolve. -If redrawing is desired in response to other asynchronous events (e.g. `setTimeout`/`setInterval`, websocket subscription, 3rd party library event handler, etc), you should manually call [`m.redraw()`](redraw.md) +If redrawing is desired in response to other asynchronous events (e.g. `setTimeout`/`setInterval`, websocket subscription, 3rd party library event handler, etc.), you should manually call [`m.redraw()`](redraw.md). --- ### What is Fantasy Land -[Fantasy Land](https://github.com/fantasyland/fantasy-land) specifies interoperability of common algebraic structures. In plain english, that means that libraries that conform to Fantasy Land specs can be used to write generic functional style code that works regardless of how these libraries implement the constructs. +[Fantasy Land](https://github.com/fantasyland/fantasy-land) specifies interoperability of common algebraic structures. In plain English, that means that libraries that conform to Fantasy Land specs can be used to write generic functional style code that works regardless of how these libraries implement the constructs. For example, say we want to create a generic function called `plusOne`. The naive implementation would look like this: @@ -574,7 +574,7 @@ function plusOne(a) { } ``` -The problem with this implementation is that it can only be used with a number. However it's possible that whatever logic produces a value for `a` could also produce an error state (wrapped in a Maybe or an Either from a library like [Sanctuary](https://github.com/sanctuary-js/sanctuary) or [Ramda-Fantasy](https://github.com/ramda/ramda-fantasy)), or it could be a Mithril.js stream, or a [flyd](https://github.com/paldepind/flyd) stream, etc. Ideally, we wouldn't want to write a similar version of the same function for every possible type that `a` could have and we wouldn't want to be writing wrapping/unwrapping/error handling code repeatedly. +The problem with this implementation is that it can only be used with a number. However it's possible that whatever logic produces a value for `a` could also produce an error state (wrapped in a Maybe or an Either from a library like [Sanctuary](https://github.com/sanctuary-js/sanctuary) or [Ramda-Fantasy](https://github.com/ramda/ramda-fantasy)), or it could be a Mithril.js stream, a [Flyd](https://github.com/paldepind/flyd) stream, etc. Ideally, we wouldn't want to write a similar version of the same function for every possible type that `a` could have and we wouldn't want to be writing wrapping/unwrapping/error handling code repeatedly. This is where Fantasy Land can help. Let's rewrite that function in terms of a Fantasy Land algebra: From 06a9cdc038637c5d68aad2085e975b0740cdde73 Mon Sep 17 00:00:00 2001 From: kevinfiol Date: Wed, 5 Apr 2023 23:53:50 -0400 Subject: [PATCH 5/8] update installation docs to use templates + esbuild --- docs/installation.md | 232 ++++++++----------------------------------- 1 file changed, 39 insertions(+), 193 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 07ac4db89..48f95c1a4 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -23,7 +23,7 @@ If you would like to try out mithril without setting up a local environment, you ### npm ```bash -$ npm install mithril --save +$ npm install mithril ``` TypeScript type definitions are available from DefinitelyTyped. They can be installed with: @@ -42,7 +42,29 @@ $ npm install -D MithrilJS/mithril.d.ts#next --- -### Quick start with Webpack +### Create a project locally + +You can use one of several existing Mithril starter templates such as +* [mithril-esbuild-starter](https://github.com/kevinfiol/mithril-esbuild-starter) +* [mithril-vite-starter](https://github.com/ArthurClemens/mithril-vite-starter) +* [mithril-rollup-starter](https://github.com/kevinfiol/mithril-rollup-starter) + +For example, if you'd like to get started with `mithril-esbuild-starter`, run the following commands: +```bash +# Clone the the template to a directory of your choice +npx degit kevinfiol/mithril-esbuild-starter hello-world + +# Navigate to newly scaffolded project +cd ./hello-world/ + +# Install dependencies +npm install + +# Build the app and watch for changes +npm run dev +``` + +### Quick start with [esbuild](https://esbuild.github.io/) 1. Initialize the directory as an npm package ```bash @@ -51,8 +73,8 @@ $ npm init --yes 2. install required tools ```bash -$ npm install mithril --save -$ npm install webpack webpack-cli --save-dev +$ npm install mithril +$ npm install esbuild --save-dev ``` 3. Add a "start" entry to the scripts section in `package.json`. @@ -60,7 +82,18 @@ $ npm install webpack webpack-cli --save-dev { "...": "...", "scripts": { - "start": "webpack ./src/index.js --output-path ./bin --watch" + "start": "esbuild ./src/index.js --bundle --outfile=./bin/main.js --watch" + } +} +``` + +Optionally, if you'd like to use JSX, you can use the `--jsx-factory` and `--jsx-fragment` flags with esbuild. + +```json +{ + "...": "...", + "scripts": { + "start": "esbuild src/index.js --bundle --outfile=public/app.js --jsx-factory=m --jsx-fragment='\"[\"' --watch" } } ``` @@ -81,194 +114,7 @@ m.render(document.body, "hello world"); 6. run bundler ```bash -$ npm start +$ npm run start ``` 7. open `index.html` in a browser - -Optionally, you can include Mithril.js as a global variable using Webpack's provide plugin, to avoid including `import m from "mithril"` across a large number of files: -```js -plugins: [ - new webpack.ProvidePlugin({m: "mithril"}), - // ... -] -``` -Then, you could remove the import line from step 4 (don't forget to restart Webpack if you ran it with `--watch`), and it will work just the same. - -#### Step by step - -For production-level projects, the recommended way of installing Mithril.js is to use npm. - -npm is the default package manager that is bundled with Node.js. It is widely used as the package manager for both client-side and server-side libraries in the JavaScript ecosystem. Download and install [Node](https://nodejs.org); npm is bundled with that and installed alongside it. - -To use Mithril.js via npm, go to your project folder, and run `npm init --yes` from the command line. This will create a file called `package.json`. - -```bash -npm init --yes -# creates a file called package.json -``` - -Then, to install Mithril.js, run: - -```bash -npm install mithril --save -``` - -This will create a folder called `node_modules`, and a `mithril` folder inside of it. It will also add an entry under `dependencies` in the `package.json` file - -You are now ready to start using Mithril. The recommended way to structure code is to modularize it via CommonJS modules: - -```javascript -// index.js -var m = require("mithril") - -m.render(document.body, "hello world") -``` - -Modularization is the practice of separating the code into files. Doing so makes it easier to find code, understand what code relies on what code, and test. - -CommonJS is a de-facto standard for modularizing JavaScript code, and it's used by Node.js, as well as tools like [Browserify](http://browserify.org/) and [Webpack](https://webpack.js.org/). It's a robust, battle-tested precursor to ES6 modules. Although the syntax for ES6 modules is specified in Ecmascript 6, the actual module loading mechanism is not. If you wish to use ES6 modules despite the non-standardized status of module loading, you can use tools like [Rollup](https://rollupjs.org/) or [Babel](https://babeljs.io/). - -Most browser today do not natively support modularization systems (CommonJS or ES6), so modularized code must be bundled into a single JavaScript file before running in a client-side application. - -A popular way for creating a bundle is to setup an npm script for [Webpack](https://webpack.js.org/). To install Webpack, run this from the command line: - -```bash -npm install webpack webpack-cli --save-dev -``` - -Open the `package.json` that you created earlier, and add an entry to the `scripts` section: - -```json -{ - "name": "my-project", - "scripts": { - "start": "webpack src/index.js --output bin/app.js -d --watch" - } -} -``` - -Remember this is a JSON file, so object key names such as `"scripts"` and `"start"` must be inside of double quotes. - -The `-d` flag tells webpack to use development mode, which produces source maps for a better debugging experience. - -The `--watch` flag tells webpack to watch the file system and automatically recreate `app.js` if file changes are detected. - -Now you can run the script via `npm start` in your command line window. This looks up the `webpack` command in the npm path, reads `index.js` and creates a file called `app.js` which includes both Mithril.js and the `hello world` code above. If you want to run the `webpack` command directly from the command line, you need to either add `node_modules/.bin` to your PATH, or install webpack globally via `npm install webpack -g`. It's, however, recommended that you always install webpack locally and use npm scripts, to ensure builds are reproducible in different computers. - -``` -npm start -``` - -Now that you have created a bundle, you can then reference the `bin/app.js` file from an HTML file: - -```html - - - Hello world - - - - - -``` - -As you've seen above, importing a module in CommonJS is done via the `require` function. You can reference npm modules by their library names (e.g. `require("mithril")` or `require("jquery")`), and you can reference your own modules via relative paths minus the file extension (e.g. if you have a file called `mycomponent.js` in the same folder as the file you're importing to, you can import it by calling `require("./mycomponent")`). - -To export a module, assign what you want to export to the special `module.exports` object: - -```javascript -// mycomponent.js -module.exports = { - view: function() {return "hello from a module"} -} -``` - -In the `index.js`, you would then write this code to import that module: - -```javascript -// index.js -var m = require("mithril") - -var MyComponent = require("./mycomponent") - -m.mount(document.body, MyComponent) -``` - -Note that in this example, we're using `m.mount`, which wires up the component to Mithril.js' autoredraw system. In most applications, you will want to use `m.mount` (or `m.route` if your application has multiple screens) instead of `m.render` to take advantage of the autoredraw system, rather than re-rendering manually every time a change occurs. - -#### Production build - -If you open bin/app.js, you'll notice that the Webpack bundle is not minified, so this file is not ideal for a live application. To generate a minified file, open `package.json` and add a new npm script: - -```json -{ - "name": "my-project", - "scripts": { - "start": "webpack src/index.js --output bin/app.js -d --watch", - "build": "webpack src/index.js --output bin/app.js -p", - } -} -``` - -You can use hooks in your production environment to run the production build script automatically. Here's an example for [Heroku](https://www.heroku.com/): - -```json -{ - "name": "my-project", - "scripts": { - "start": "webpack -d --watch", - "build": "webpack -p", - "heroku-postbuild": "webpack -p" - } -} -``` - ---- - -### Alternate ways to use Mithril.js - -#### Live reload development environment - -Live reload is a feature where code changes automatically trigger the page to reload. [Budo](https://github.com/mattdesl/budo) is one tool that enables live reloading. - -```bash -# 1) install -npm install mithril --save -npm install budo -g - -# 2) add this line into the scripts section in package.json -# "scripts": { -# "start": "budo --live --open index.js" -# } - -# 3) create an `index.js` file - -# 4) run budo -npm start -``` - -The source file `index.js` will be compiled (bundled) and a browser window opens showing the result. Any changes in the source files will instantly get recompiled and the browser will refresh reflecting the changes. - -#### Vanilla - -If you don't have the ability to run a bundler script due to company security policies, there's an options to not use a module system at all: - -```html - - - Hello world - - - - - - -``` - -```javascript -// index.js - -// if a CommonJS environment is not detected, Mithril.js will be created in the global scope -m.render(document.body, "hello world") -``` From e51feac36cd14feba1fdff46e84720c7bb9bc9e3 Mon Sep 17 00:00:00 2001 From: keb Date: Mon, 23 Sep 2024 15:48:12 -0400 Subject: [PATCH 6/8] fix errors and indentation --- docs/installation.md | 49 ++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 48f95c1a4..69c1237b4 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -44,9 +44,9 @@ $ npm install -D MithrilJS/mithril.d.ts#next ### Create a project locally -You can use one of several existing Mithril starter templates such as -* [mithril-esbuild-starter](https://github.com/kevinfiol/mithril-esbuild-starter) +You can use one of several existing Mithril.js starter templates such as * [mithril-vite-starter](https://github.com/ArthurClemens/mithril-vite-starter) +* [mithril-esbuild-starter](https://github.com/kevinfiol/mithril-esbuild-starter) * [mithril-rollup-starter](https://github.com/kevinfiol/mithril-rollup-starter) For example, if you'd like to get started with `mithril-esbuild-starter`, run the following commands: @@ -66,55 +66,56 @@ npm run dev ### Quick start with [esbuild](https://esbuild.github.io/) -1. Initialize the directory as an npm package +1. Initialize the directory as an npm package. ```bash $ npm init --yes ``` -2. install required tools +2. Install required tools. ```bash $ npm install mithril $ npm install esbuild --save-dev ``` 3. Add a "start" entry to the scripts section in `package.json`. -```json -{ - "...": "...", - "scripts": { - "start": "esbuild ./src/index.js --bundle --outfile=./bin/main.js --watch" + ```json + { + "...": "...", + "scripts": { + "start": "esbuild index.js --bundle --outfile=bin/main.js --watch" + } } -} -``` + ``` -Optionally, if you'd like to use JSX, you can use the `--jsx-factory` and `--jsx-fragment` flags with esbuild. + Optionally, if you'd like to use JSX, you can use the `--jsx-factory` and `--jsx-fragment` flags with esbuild. -```json -{ - "...": "...", - "scripts": { - "start": "esbuild src/index.js --bundle --outfile=public/app.js --jsx-factory=m --jsx-fragment='\"[\"' --watch" + ```json + { + "...": "...", + "scripts": { + "start": "esbuild index.js --bundle --outfile=bin/main.js --jsx-factory=m --jsx-fragment='\"[\"' --watch" + } } -} -``` + ``` -4. Create `src/index.js` file. +4. Create `index.js` file. ```javascript import m from "mithril"; -m.render(document.body, "hello world"); +m.render(document.getElementById("app"), "hello world"); ``` -5. create `index.html` +5. Create `index.html` file. ```html +
``` -6. run bundler +6. Run your bundler script. ```bash $ npm run start ``` -7. open `index.html` in a browser +7. Open `index.html` in a browser. You should see `hello world` rendered on your page. From 0180ac4635addf6d01920e4fa8cb24b167a1e9e5 Mon Sep 17 00:00:00 2001 From: keb Date: Mon, 23 Sep 2024 16:28:13 -0400 Subject: [PATCH 7/8] undo changes to lockfile --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26dbed822..f2fddeb0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2238,7 +2238,7 @@ "node_modules/istanbul/node_modules/async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "node_modules/istanbul/node_modules/esprima": { @@ -5831,7 +5831,7 @@ "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "esprima": { From 0a6178226f7f294376033bd8294d081cd18b34cb Mon Sep 17 00:00:00 2001 From: keb Date: Mon, 23 Sep 2024 17:49:34 -0400 Subject: [PATCH 8/8] use consistent capitalization and naming --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 69c1237b4..487334170 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -16,7 +16,7 @@ If you're new to JavaScript or just want a very simple setup to get your feet we ``` -If you would like to try out mithril without setting up a local environment, you can easily use an online playground at [flems.io/mithril](https://flems.io/mithril). +If you would like to try out Mithril.js without setting up a local environment, you can easily use an online playground at [flems.io/mithril](https://flems.io/mithril). ---