A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that uses markdown-it.

Overview

markdown-it-eleventy-img

A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that use markdown-it. Fully compatible with the Eleventy static site generator.

NPM version badge. GitHub issues badge. NPM license badge.

Status

This is pre-release software. There might still be API changes. I'm pretty much developing this plugin in the open and I'm learning buckets!

Use at your own risk, but feel free to get in touch if you have questions, a comment or want to talk about your experience as a user.

Requirements

Same as eleventy-img. Was tested with markdown-it v9.0.0 and Eleventy v1.0.1.

Installation

npm install --save-dev markdown-it-eleventy-img

Usage

This plugin is zero-config by default and can be use as a regular markdown-it plugin.

const md = require('markdown-it')()
  .use(require("markdown-it-eleventy-img"));

With Eleventy (11ty), use the config API setLibrary method.

// .eleventy.js (or your config file.)

const markdownIt = require('markdown-it');
const markdownItEleventyImg = require("markdown-it-eleventy-img");

module.exports = function(config) {
  config.setLibrary('md', markdownIt ({
    html: true,
    breaks: true,
    linkify: true
  })
  .use(markdownItEleventyImg);
}

Using markdown-it-eleventy-img without options will utilize eleventy-img default options which are:

  • widths: [null]
  • formats: ["webp", "jpeg"]
  • urlPath: "/img/"
  • outputDir: "./img/"

So using:

<!-- index.md -->

![Image alt](./img/my-image.jpg "Title text!")

Will output:

<p><picture><source type="image/webp" srcset="/img/wtdfPs-yjZ-2048.webp 2048w"><img alt="Image alt" title="Title text!" src="/img/wtdfPs-yjZ-2048.jpeg" width="2048" height="1463"></picture></p>

By default, images are rendered using the generateHTML function from the eleventy-img plugin with the whitespaceMode "to strip the whitespace from the output of the <picture> element (a must-have for use in markdown files)" (reference).

You can add an options object to override eleventy-img defaults and attributes.

Using options

The options object may contain up to three properties:

  • imgOptions (object). Overrides eleventy-img specific options.
  • globalAttributes (object). Adds attributes to the image output.
  • renderImage (function). Lets you render custom markup and do almost everything you like with your markdown images (see Custom image rendering).

Here's an exemple of using the options object (without renderImage):

.use(markdownItEleventyImg, {
  imgOptions: {
    widths: [800, 500, 300],
    urlPath: "/images/",
    outputDir: path.join("_site", "images"),
    formats: ["avif", "webp", "jpeg"]
  },
  globalAttributes: {
    class: "markdown-image",
    decoding: "async",
    // If you use multiple widths,
    // don't forget to add a `sizes` attribute.
    sizes: "100vw"
  }
});

With these options, the image ![Image alt](./img/my-image.jpg "Title text!"), would be rendered as:

<p><picture><source type="image/avif" srcset="/images/wtdfPs-yjZ-300.avif 300w, /images/wtdfPs-yjZ-500.avif 500w, /images/wtdfPs-yjZ-800.avif 800w" sizes="100vw"><source type="image/webp" srcset="/images/wtdfPs-yjZ-300.webp 300w, /images/wtdfPs-yjZ-500.webp 500w, /images/wtdfPs-yjZ-800.webp 800w" sizes="100vw"><source type="image/jpeg" srcset="/images/wtdfPs-yjZ-300.jpeg 300w, /images/wtdfPs-yjZ-500.jpeg 500w, /images/wtdfPs-yjZ-800.jpeg 800w" sizes="100vw"><img alt="Image alt" title="Title text!" class="markdown-image" decoding="async" src="/images/wtdfPs-yjZ-300.jpeg" width="800" height="571"></picture></p>

The alt, the src, and the title attributes are taken from the markdown token: ![alt](./source.ext "Title").

Setting alt or src properties in globalAttributes will have no effect on the markdown image output. These attributes have to be set on the markdown image token instead.

A warning will be logged in the console if these properties are set in globalAttributes.

The title property can be set in globalAttributes, but there's probably little insentive to do so. Attributes set on the token will always override global attributes.

Custom image rendering

You may use the renderImage method to customize the output or to add logic to your image rendering. This function is returned inside of the image renderer so any string returned by renderImage will render the markup for every image tokens.

renderImage(image, attributes) {
  const [ src, attrs ] = attributes;
  const alt = attrs.alt;
    
  return `<img src="${src}" alt="${alt}">`;
}

renderImage takes two parameters and each one are tuples.

renderImage(image, attributes) {
  const [ Image, options ] = image;
  const [ src, attrs ] = attributes;

  // ...
}

We separate the src form the rest of the attributes to facilitate the use of the Image class. If you need to, it is simple to reunite.

const [ src, attrs ] = attributes;
const allAttributes = { ...attrs, src }

Here's an exemple of adding a <figure> parent and an optional <figcaption>.

.use(markdownItEleventyImg, {
  imgOptions: {
    widths: [600, 300],
    urlPath: "/images/",
    outputDir: "./_site/images/",
    formats: ["avif", "webp", "jpeg"]
  },
  globalAttributes: {
    class: "markdown-image",
    decoding: "async",
    sizes: "100vw"
  },
  renderImage(image, attributes) {
    const [ Image, options ] = image;
    const [ src, attrs ] = attributes;

    Image(src, options);

    const metadata = Image.statsSync(src, options);
    const imageMarkup = Image.generateHTML(metadata, attrs, {
      whitespaceMode: "inline"
    });

    return `<figure>${imageMarkup}${attrs.title ? `<figcaption>${attrs.title}</figcaption>` : ""}</figure>`;
  }
});

Note that you have to use eleventy-img synchronous API inside renderImage. Unfortunately, markdown-it plugins doesn't support async code (see Limitations). It's good to know that even in the sync API, the images are generated asychronously. Got to 😍 11ty!

Use with markdown-it-attrs

Starting with v0.3.0, markdown-it-eleventy-img is fully compatible with markdown-it-attrs. Setting attributes with markdown-it-attrs will be passed to the image output. Same attributes will be overridden. The attribute set on the token will prevail over globalAttributes.

Limitations

markdown-it-eleventy-img is currently not supported with remote sources. Starting with v0.7.0, the default behavior will be to revert to native markdown-it renderer whenever remote images are encountered (local sources will still be rendered through eleventy-img).

To process remote images, use code where the eleventy-img async API is allowed. For a more technical expaination see issue#2.

Alignements

markdown-it-eleventy-img tries to follow as much as possible the markdown philosophy. The idea is to keep simplicity while generating responsive image format in markdown. With markdown-it-eleventy-img, you author images in markdown the same way as usual.

Also, the aim is to stay coherent with eleventy-img defaults while allowing users to use the full feature set (almost). So if your familiar with the eleventy-img plugin, there should be no surprises.

markdown-it-eleventy-img is not a replacement for an Eleventy shortcode. Shortcodes will give more power and control. On the other hand, markdown will trade control for easiness of reading and writing.

Admittedly, it’s fairly difficult to devise a “natural” syntax for placing images into a plain text document format. That beiing said, it's probably nicer to use markdown image syntax to include an image in a blog post than to use a shortcode. So markdown-it-eleventy-img is mainly an ergonomic solution for using eleventy-img plugin with the markdown image synthax.

Motivation

I've seen it asked here and there: can I use the eleventy-img plugin with markdown token? I thought it was a good challenge and I ended-up publishing my work.

Comments
  • Question about whether the relative path is base on current working dir or current md file?

    Question about whether the relative path is base on current working dir or current md file?

    I usually use markdown with image like that:

    - path/to/folder
      - hello.md
      - hello.jpg
    

    And in hello.md, image is referred like ![](./hello.jpg).

    It's working in VSCode that what I think might be right, but not here. This package always try to resolve the src with cwd.

    I was like to make a PR to fix this, but thought that may be a big break change. I'd like to listen your opinion about it, thanks.

    opened by RunSimple42 11
  • Relative Path Images

    Relative Path Images

    This is an incomplete PR that I put together to fix my own relative image issues for my 11ty project, BEFORE I noticed #8 where this is being discussed.

    It's a bit of a hack, but I added some conditional logic when setting the src in the plugin, where if the file is not remote and does not exist in the default directory, it checks for is relative to the file it image comes from.

    I realize the desired behaviour is a config flag, but I thought I would share this as part of the discussion. Maybe it will help a bit to inspire some people.

    Anyway-- I've marked it as draft so people can take a look. I've also added some test data, but they are failing. I'm hoping to take a closer look at it soon to figure out the best way to include tests around the new logic.

    Feedback and discussion is appreciated. :)

    enhancement 
    opened by davidwesst 8
  • Feature request: Ability to manage remote URLs

    Feature request: Ability to manage remote URLs

    Hey there!

    First off, thanks for making this plugin! It's nice to be able to keep website content as SSG agnostic as is reasonable 🙂

    I'm not sure if it's expected but I was a bit surprised to see this plugin blow up when I tried using a remote URL, of which I have quite a few (I'm midway through migrating to Eleventy at the moment)

    I can see that everything is fed into statsSync which has a check for remote URLs visible here: https://github.com/11ty/eleventy-img/blob/e51ad8e1da4a7e6528f3cc8f4b682972ba402a67/img.js#L545

    The trouble with the recommended method (statsByDimensionsSync) however is that you need to provide an explicit height and width and you can't just pass in null to get automatic sizing.

    Given that we have made a call to Image, we actually have this metadata so something like this is technically possible (although hacky):

    const img = Image(src, options)
    
    const fileTypes = Object.keys(img)
    const firstType = fileTypes[0]
    const largestImage = img[firstType].length - 1
    // We just need "some" size so we'll fetch the largest available
    const { height, width } = img[firstType][largestImage]
    
    let metadata;
    
    if (!Image.Util.isRemoteUrl(src)) {
      metadata = Image.statsSync(src, options)
    } else {
      metadata = Image.statsByDimensionsSync(src, height, width, options)
    }
    

    This does actually work but the trouble I had is that Image technically returns a Promise.

    I note that you mentioned that only synchronous calls are allowed within markdown-it so trying to await Image had no luck and neither did trying to chain Image.then(img => blah).

    Well, functionally it worked but I would just end up with [Object promise] instead of my images when pages rendered 😅

    Anyway, in the meantime, I'm happily using this plugin with the following renderImage method so I'm not in any particular rush for this issue to be resolved:

    renderImage(image, attributes) {
      const [ Image, options ] = image;
      const [ src, attrs ] = attributes;
    
      Image(src, options)
    
      if (!Image.Util.isRemoteUrl(src)) {
        metadata = Image.statsSync(src, options)
    
        const imageMarkup = Image.generateHTML(metadata, attrs, {
          whitespaceMode: "inline"
        })
    
        return imageMarkup
      }
      return `<img src="${src}" alt="${attrs.alt}">`;
    }
    

    Nothing fancy, it just falls back to a regular img if it detects a remote URL using eleventy-img's built in Util.isRemoteURL method

    Hopefully my digging around above gives a bit of an idea of how you might go about resolving this and if I can get something fully working, I'll have a go at submitting a PR 🙂

    enhancement 
    opened by marcus-crane 3
  • Bump markdown-it-attrs from 4.1.4 to 4.1.6

    Bump markdown-it-attrs from 4.1.4 to 4.1.6

    Bumps markdown-it-attrs from 4.1.4 to 4.1.6.

    Release notes

    Sourced from markdown-it-attrs's releases.

    v4.1.6

    Fix empty quoted attr value eats the next attr: arve0/markdown-it-attrs#147

    Thanks @​ZakKemble :octocat:

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Possible to use custom filenames

    Possible to use custom filenames

    Forgive me if this is an obvious solution, I'm a bit of a rookie here.

    As per the eleventy-image plugin docs, it's possible to use custom filenames. Is this also a possibility with markdown-it-elevent-img?

    opened by elliottcandrew 2
  • Bump eslint from 8.29.0 to 8.30.0

    Bump eslint from 8.29.0 to 8.30.0

    Bumps eslint from 8.29.0 to 8.30.0.

    Release notes

    Sourced from eslint's releases.

    v8.30.0

    Features

    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • 7190d98 feat: update globals (#16654) (Sébastien Règne)

    Bug Fixes

    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)

    Documentation

    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)
    • 8ba124c docs: update the prefer-const example (#16607) (Pavel)
    • e6cb05a docs: fix css leaking (#16603) (Sam Chen)

    Chores

    • f2c4737 chore: upgrade @​eslint/eslintrc@​1.4.0 (#16675) (Milos Djermanovic)
    • ba74253 chore: standardize npm script names per #14827 (#16315) (Patrick McElhaney)
    • 0d9af4c ci: fix npm v9 problem with file: (#16664) (Milos Djermanovic)
    • 90c9219 refactor: migrate off deprecated function-style rules in all tests (#16618) (Bryan Mishkin)
    Changelog

    Sourced from eslint's changelog.

    v8.30.0 - December 16, 2022

    • f2c4737 chore: upgrade @​eslint/eslintrc@​1.4.0 (#16675) (Milos Djermanovic)
    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • ba74253 chore: standardize npm script names per #14827 (#16315) (Patrick McElhaney)
    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • 0d9af4c ci: fix npm v9 problem with file: (#16664) (Milos Djermanovic)
    • 7190d98 feat: update globals (#16654) (Sébastien Règne)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 90c9219 refactor: migrate off deprecated function-style rules in all tests (#16618) (Bryan Mishkin)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)
    • 8ba124c docs: update the prefer-const example (#16607) (Pavel)
    • e6cb05a docs: fix css leaking (#16603) (Sam Chen)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump eslint from 8.28.0 to 8.29.0

    Bump eslint from 8.28.0 to 8.29.0

    Bumps eslint from 8.28.0 to 8.29.0.

    Release notes

    Sourced from eslint's releases.

    v8.29.0

    Features

    • 49a07c5 feat: add allowParensAfterCommentPattern option to no-extra-parens (#16561) (Nitin Kumar)
    • e6a865d feat: prefer-named-capture-group add suggestions (#16544) (Josh Goldberg)
    • a91332b feat: In no-invalid-regexp validate flags also for non-literal patterns (#16583) (trosos)

    Documentation

    • 0311d81 docs: Configuring Plugins page intro, page tweaks, and rename (#16534) (Ben Perlmutter)
    • 57089b1 docs: add a property assignment example for camelcase rule (#16605) (Milos Djermanovic)
    • b6ab030 docs: add docs codeowners (#16601) (Strek)
    • 6380c87 docs: fix sitemap and feed (#16592) (Milos Djermanovic)
    • ade621d docs: perf debounce the search query (#16586) (Shanmughapriyan S)
    • fbcf3ab docs: fix searchbar clear button (#16585) (Shanmughapriyan S)
    • f894035 docs: HTTPS link to yeoman.io (#16582) (Christian Oliff)
    • de12b26 docs: Update configuration file pages (#16509) (Ben Perlmutter)
    • 1ae9f20 docs: update correct code examples for no-extra-parens rule (#16560) (Nitin Kumar)

    Chores

    • 7628403 chore: add discord channel link (#16590) (Amaresh S M)
    • f5808cb chore: fix rule doc headers check (#16564) (Milos Djermanovic)
    Changelog

    Sourced from eslint's changelog.

    v8.29.0 - December 2, 2022

    • 0311d81 docs: Configuring Plugins page intro, page tweaks, and rename (#16534) (Ben Perlmutter)
    • 57089b1 docs: add a property assignment example for camelcase rule (#16605) (Milos Djermanovic)
    • b6ab030 docs: add docs codeowners (#16601) (Strek)
    • 7628403 chore: add discord channel link (#16590) (Amaresh S M)
    • 49a07c5 feat: add allowParensAfterCommentPattern option to no-extra-parens (#16561) (Nitin Kumar)
    • 6380c87 docs: fix sitemap and feed (#16592) (Milos Djermanovic)
    • e6a865d feat: prefer-named-capture-group add suggestions (#16544) (Josh Goldberg)
    • ade621d docs: perf debounce the search query (#16586) (Shanmughapriyan S)
    • a91332b feat: In no-invalid-regexp validate flags also for non-literal patterns (#16583) (trosos)
    • fbcf3ab docs: fix searchbar clear button (#16585) (Shanmughapriyan S)
    • f894035 docs: HTTPS link to yeoman.io (#16582) (Christian Oliff)
    • de12b26 docs: Update configuration file pages (#16509) (Ben Perlmutter)
    • f5808cb chore: fix rule doc headers check (#16564) (Milos Djermanovic)
    • 1ae9f20 docs: update correct code examples for no-extra-parens rule (#16560) (Nitin Kumar)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump ava from 5.0.1 to 5.1.0

    Bump ava from 5.0.1 to 5.1.0

    Bumps ava from 5.0.1 to 5.1.0.

    Release notes

    Sourced from ava's releases.

    v5.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/avajs/ava/compare/v5.0.1...v5.1.0

    Commits
    • 4ecfe7d 5.1.0
    • 609b307 Update dependencies
    • 647d3e1 Check for --config file extensions after they fail to load, allowing custom l...
    • 9206928 Output logs for tests that remain pending when AVA exits
    • 136dde3 Update reporter logs for latest Node.js 16
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump eslint from 8.27.0 to 8.28.0

    Bump eslint from 8.27.0 to 8.28.0

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps eslint from 8.27.0 to 8.28.0.

    Release notes

    Sourced from eslint's releases.

    v8.28.0

    Features

    • 63bce44 feat: add ignoreClassFieldInitialValues option to no-magic-numbers (#16539) (Milos Djermanovic)
    • 8385ecd feat: multiline properties in rule key-spacing with option align (#16532) (Francesco Trotta)
    • a4e89db feat: no-obj-calls support Intl (#16543) (Sosuke Suzuki)

    Bug Fixes

    • c50ae4f fix: Ensure that dot files are found with globs. (#16550) (Nicholas C. Zakas)
    • 9432b67 fix: throw error for first unmatched pattern (#16533) (Milos Djermanovic)
    • e76c382 fix: allow * 1 when followed by / in no-implicit-coercion (#16522) (Milos Djermanovic)

    Documentation

    • 34c05a7 docs: Language Options page intro and tweaks (#16511) (Ben Perlmutter)
    • 3e66387 docs: add intro and edit ignoring files page (#16510) (Ben Perlmutter)
    • 436f712 docs: fix Header UI inconsistency (#16464) (Tanuj Kanti)
    • f743816 docs: switch to wrench emoji for auto-fixable rules (#16545) (Bryan Mishkin)
    • bc0547e docs: improve styles for versions and languages page (#16553) (Nitin Kumar)
    • 6070f58 docs: clarify esquery issue workaround (#16556) (Milos Djermanovic)
    • b48e4f8 docs: Command Line Interface intro and tweaks (#16535) (Ben Perlmutter)
    • b92b30f docs: Add Rules page intro and content tweaks (#16523) (Ben Perlmutter)
    • 1769b42 docs: Integrations page introduction (#16548) (Ben Perlmutter)
    • a8d0a57 docs: make table of contents sticky on desktop (#16506) (Sam Chen)
    • a01315a docs: fix route of japanese translation site (#16542) (Tanuj Kanti)
    • 0515628 docs: use emoji instead of svg for deprecated rule (#16536) (Bryan Mishkin)
    • 68f1288 docs: set default layouts (#16484) (Percy Ma)
    • 776827a docs: init config about specifying shared configs (#16483) (Percy Ma)
    • 5c39425 docs: fix broken link to plugins (#16520) (Ádám T. Nagy)
    • c97c789 docs: Add missing no-new-native-nonconstructor docs code fence (#16503) (Brandon Mills)

    Chores

    • e94a4a9 chore: Add tests to verify #16038 is fixed (#16538) (Nicholas C. Zakas)
    • e13f194 chore: stricter validation of meta.docs.description in core rules (#16529) (Milos Djermanovic)
    • 72dbfbc chore: use pkg parameter in getNpmPackageVersion (#16525) (webxmsj)
    Changelog

    Sourced from eslint's changelog.

    v8.28.0 - November 18, 2022

    • 34c05a7 docs: Language Options page intro and tweaks (#16511) (Ben Perlmutter)
    • 3e66387 docs: add intro and edit ignoring files page (#16510) (Ben Perlmutter)
    • 436f712 docs: fix Header UI inconsistency (#16464) (Tanuj Kanti)
    • f743816 docs: switch to wrench emoji for auto-fixable rules (#16545) (Bryan Mishkin)
    • bc0547e docs: improve styles for versions and languages page (#16553) (Nitin Kumar)
    • 6070f58 docs: clarify esquery issue workaround (#16556) (Milos Djermanovic)
    • b48e4f8 docs: Command Line Interface intro and tweaks (#16535) (Ben Perlmutter)
    • b92b30f docs: Add Rules page intro and content tweaks (#16523) (Ben Perlmutter)
    • 1769b42 docs: Integrations page introduction (#16548) (Ben Perlmutter)
    • 63bce44 feat: add ignoreClassFieldInitialValues option to no-magic-numbers (#16539) (Milos Djermanovic)
    • c50ae4f fix: Ensure that dot files are found with globs. (#16550) (Nicholas C. Zakas)
    • a8d0a57 docs: make table of contents sticky on desktop (#16506) (Sam Chen)
    • 9432b67 fix: throw error for first unmatched pattern (#16533) (Milos Djermanovic)
    • 8385ecd feat: multiline properties in rule key-spacing with option align (#16532) (Francesco Trotta)
    • a4e89db feat: no-obj-calls support Intl (#16543) (Sosuke Suzuki)
    • a01315a docs: fix route of japanese translation site (#16542) (Tanuj Kanti)
    • e94a4a9 chore: Add tests to verify #16038 is fixed (#16538) (Nicholas C. Zakas)
    • 0515628 docs: use emoji instead of svg for deprecated rule (#16536) (Bryan Mishkin)
    • e76c382 fix: allow * 1 when followed by / in no-implicit-coercion (#16522) (Milos Djermanovic)
    • 68f1288 docs: set default layouts (#16484) (Percy Ma)
    • e13f194 chore: stricter validation of meta.docs.description in core rules (#16529) (Milos Djermanovic)
    • 776827a docs: init config about specifying shared configs (#16483) (Percy Ma)
    • 72dbfbc chore: use pkg parameter in getNpmPackageVersion (#16525) (webxmsj)
    • 5c39425 docs: fix broken link to plugins (#16520) (Ádám T. Nagy)
    • c97c789 docs: Add missing no-new-native-nonconstructor docs code fence (#16503) (Brandon Mills)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump engine.io from 6.2.0 to 6.2.1

    Bump engine.io from 6.2.0 to 6.2.1

    Bumps engine.io from 6.2.0 to 6.2.1.

    Release notes

    Sourced from engine.io's releases.

    6.2.1

    :warning: This release contains an important security fix :warning:

    A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

    Error: read ECONNRESET
        at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
    Emitted 'error' event on Socket instance at:
        at emitErrorNT (internal/streams/destroy.js:106:8)
        at emitErrorCloseNT (internal/streams/destroy.js:74:3)
        at processTicksAndRejections (internal/process/task_queues.js:80:21) {
      errno: -104,
      code: 'ECONNRESET',
      syscall: 'read'
    }
    

    Please upgrade as soon as possible.

    Bug Fixes

    • catch errors when destroying invalid upgrades (#658) (425e833)
    Changelog

    Sourced from engine.io's changelog.

    6.2.1 (2022-11-20)

    :warning: This release contains an important security fix :warning:

    A malicious client could send a specially crafted HTTP request, triggering an uncaught exception and killing the Node.js process:

    Error: read ECONNRESET
        at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
    Emitted 'error' event on Socket instance at:
        at emitErrorNT (internal/streams/destroy.js:106:8)
        at emitErrorCloseNT (internal/streams/destroy.js:74:3)
        at processTicksAndRejections (internal/process/task_queues.js:80:21) {
      errno: -104,
      code: 'ECONNRESET',
      syscall: 'read'
    }
    

    Please upgrade as soon as possible.

    Bug Fixes

    • catch errors when destroying invalid upgrades (#658) (425e833)

    3.6.0 (2022-06-06)

    Bug Fixes

    Features

    • decrease the default value of maxHttpBufferSize (58e274c)

    This change reduces the default value from 100 mb to a more sane 1 mb.

    This helps protect the server against denial of service attacks by malicious clients sending huge amounts of data.

    See also: https://github.com/advisories/GHSA-j4f2-536g-r55m

    • increase the default value of pingTimeout (f55a79a)
    Commits
    • 24b847b chore(release): 6.2.1
    • 425e833 fix: catch errors when destroying invalid upgrades (#658)
    • 99adb00 chore(deps): bump xmlhttprequest-ssl and engine.io-client in /examples/latenc...
    • d196f6a chore(deps): bump minimatch from 3.0.4 to 3.1.2 (#660)
    • 7c1270f chore(deps): bump nanoid from 3.1.25 to 3.3.1 (#659)
    • 535a01d ci: add Node.js 18 in the test matrix
    • 1b71a6f docs: remove "Vanilla JS" highlight from README (#656)
    • 917d1d2 refactor: replace deprecated String.prototype.substr() (#646)
    • 020801a chore: add changelog for version 3.6.0
    • ed1d6f9 test: make test script work on Windows (#643)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • Bump eslint from 8.26.0 to 8.27.0

    Bump eslint from 8.26.0 to 8.27.0

    Bumps eslint from 8.26.0 to 8.27.0.

    Release notes

    Sourced from eslint's releases.

    v8.27.0

    Features

    • f14587c feat: new no-new-native-nonconstructor rule (#16368) (Sosuke Suzuki)
    • 978799b feat: add new rule no-empty-static-block (#16325) (Sosuke Suzuki)
    • 69216ee feat: no-empty suggest to add comment in empty BlockStatement (#16470) (Nitin Kumar)
    • 319f0a5 feat: use context.languageOptions.ecmaVersion in core rules (#16458) (Milos Djermanovic)

    Bug Fixes

    • c3ce521 fix: Ensure unmatched glob patterns throw an error (#16462) (Nicholas C. Zakas)
    • 886a038 fix: handle files with unspecified path in getRulesMetaForResults (#16437) (Francesco Trotta)

    Documentation

    • ce93b42 docs: Stylelint property-no-unknown (#16497) (Nick Schonning)
    • d2cecb4 docs: Stylelint declaration-block-no-shorthand-property-overrides (#16498) (Nick Schonning)
    • 0a92805 docs: stylelint color-hex-case (#16496) (Nick Schonning)
    • 74a5af4 docs: fix stylelint error (#16491) (Milos Djermanovic)
    • 324db1a docs: explicit stylelint color related rules (#16465) (Nick Schonning)
    • 94dc4f1 docs: use Stylelint for HTML files (#16468) (Nick Schonning)
    • cc6128d docs: enable stylelint declaration-block-no-duplicate-properties (#16466) (Nick Schonning)
    • d03a8bf docs: Add heading to justification explanation (#16430) (Maritaria)
    • 8a15968 docs: add Stylelint configuration and cleanup (#16379) (Nick Schonning)
    • 9b0a469 docs: note commit messages don't support scope (#16435) (Andy Edwards)
    • 1581405 docs: improve context.getScope() docs (#16417) (Ben Perlmutter)
    • b797149 docs: update formatters template (#16454) (Milos Djermanovic)
    • 5ac4de9 docs: fix link to formatters on the Core Concepts page (#16455) (Vladislav)
    • 33313ef docs: core-concepts: fix link to semi rule (#16453) (coderaiser)
    Changelog

    Sourced from eslint's changelog.

    v8.27.0 - November 6, 2022

    • f14587c feat: new no-new-native-nonconstructor rule (#16368) (Sosuke Suzuki)
    • 978799b feat: add new rule no-empty-static-block (#16325) (Sosuke Suzuki)
    • ce93b42 docs: Stylelint property-no-unknown (#16497) (Nick Schonning)
    • d2cecb4 docs: Stylelint declaration-block-no-shorthand-property-overrides (#16498) (Nick Schonning)
    • 0a92805 docs: stylelint color-hex-case (#16496) (Nick Schonning)
    • c3ce521 fix: Ensure unmatched glob patterns throw an error (#16462) (Nicholas C. Zakas)
    • 74a5af4 docs: fix stylelint error (#16491) (Milos Djermanovic)
    • 69216ee feat: no-empty suggest to add comment in empty BlockStatement (#16470) (Nitin Kumar)
    • 324db1a docs: explicit stylelint color related rules (#16465) (Nick Schonning)
    • 94dc4f1 docs: use Stylelint for HTML files (#16468) (Nick Schonning)
    • cc6128d docs: enable stylelint declaration-block-no-duplicate-properties (#16466) (Nick Schonning)
    • d03a8bf docs: Add heading to justification explanation (#16430) (Maritaria)
    • 886a038 fix: handle files with unspecified path in getRulesMetaForResults (#16437) (Francesco Trotta)
    • 319f0a5 feat: use context.languageOptions.ecmaVersion in core rules (#16458) (Milos Djermanovic)
    • 8a15968 docs: add Stylelint configuration and cleanup (#16379) (Nick Schonning)
    • 9b0a469 docs: note commit messages don't support scope (#16435) (Andy Edwards)
    • 1581405 docs: improve context.getScope() docs (#16417) (Ben Perlmutter)
    • b797149 docs: update formatters template (#16454) (Milos Djermanovic)
    • 5ac4de9 docs: fix link to formatters on the Core Concepts page (#16455) (Vladislav)
    • 33313ef docs: core-concepts: fix link to semi rule (#16453) (coderaiser)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump eslint from 8.30.0 to 8.31.0

    Bump eslint from 8.30.0 to 8.31.0

    Bumps eslint from 8.30.0 to 8.31.0.

    Release notes

    Sourced from eslint's releases.

    v8.31.0

    Features

    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)

    Bug Fixes

    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)

    Documentation

    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)

    Chores

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)
    Changelog

    Sourced from eslint's changelog.

    v8.31.0 - December 31, 2022

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.9.0)
  • v0.9.0(Oct 19, 2022)

    New features

    • resolvePath method allow changing path resolution in execution context that give access to image source path through Markdown-it env parameter. Was only tested with Eleventy:
    config.setLibrary("md", md.use(markdownItEleventyImg, {
      resolvePath: (filepath, env) => path.join(path.dirname(env.page.inputPath), filepath)
    }));
    

    Thanks to @davidwesst for the heavy lifting! :tada:

    Breaking changes

    • Brought remote sources pass through handling at the top of the execution. Prevents users of renderImage or users of resolvePath to have to handle remote images themselves. Due to the synchronous nature of Markdown-it, markdown-it-eleventy-img does not support remote sources. I suspect this breaking change to be low impact.

    Notes

    • Set dependabot versioning-strategy to increase.
    Source code(tar.gz)
    Source code(zip)
  • v0.8.1(Aug 27, 2022)

    Patch (non-critical)

    • Fixed typo in project description.
    • Reformulated some sentences in README for clarity.
    • Refactored tokenAttributes variable name to normalizedTokenAttributes to clarify the nature of the variable and ease maintenance.
    • Refactored the attribution of alt value in the remote source fallback to rely solely on markdown-it API (see Token#content).
    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Aug 23, 2022)

    Breaking changes

    • Removed restriction on globalAttributes title. It is now possible to set title gobally through the globalAttributes config object. Attributes set on the token will always override global ones. This breaking change is expected to have low impact. Setting title globally has very few real use case.
    • Trim and lower case globalAttributes as well as tokenAttributes to make sure token attributes will have precedence and to avoid double attributes on edge cases.

    Notes

    • Integrated ESLint tooling.
    • Refactored warnings for src and alt for better clarity.
    • Added code of conduct.
    • Removed warning for title.
    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Aug 20, 2022)

    Patch

    • Fixes passing alt value to the token attributes before returning the default markdown-it renderer on remote sources. Without this step, alt value will always be empty whether user set it on the token or not. Thanks to @marcus-crane :raised_hands: for the PR!
    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Aug 19, 2022)

    New features

    • Default behavior reverts to native markdown-it renderer whenever remote images are encountered (local sources will still be rendered through eleventy-img).

    Notes

    • Unit testing
      • markdown-it-implicit-figures plugin for compatibility (it seems fully compatible!)
      • Remote images falls back to default markdown-it renderer
      • Remote images with statsByDimensionsSync
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Aug 13, 2022)

  • v0.5.0(Aug 9, 2022)

    Breaking changes

    • Put src in first position in attributes tuple.
    • Remove lazy flag feature. Other plugins already deal with setting attributes to individual token like markdown-it-attrs which is compatible with this plugin. I don't see the need to double up on that feature.

    Notes

    • Integrated errors for parameter types.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Aug 1, 2022)

    Breaking changes

    • Changed options API:
      • options to imgOptions
      • attributes to globalAttributes

    New features

    • Added renderImage method as option. A callback function allowing users to implement their own render logic.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jul 28, 2022)

Owner
null
An Eleventy server plugin to use Browsersync with Eleventy 2.0+.

An Eleventy server plugin to use Browsersync with Eleventy 2.0+.

Eleventy 12 Sep 9, 2022
This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do any operations that can be performed in python shell with this package.

Django execute code This is a project that is used to execute python codes in the web page. You can install and use it in django projects, You can do

Shinu 5 Nov 12, 2022
MidJourney is an AI text-to-image service that generates images based on textual prompts. It is often used to create artistic or imaginative images, and is available on Discord and through a web interface here.

Midjourney MidJourney is an AI text-to-image service that generates images based on textual prompts. It is often used to create artistic or imaginativ

Andrew Tsegaye 8 May 1, 2023
A peculiar little website that uses Eleventy + Netlify + Puppeteer to create generative poster designs

Garden — Generative Jamstack Posters "Garden" is an experiment in building creative, joyful online experiences using core web technologies. ?? Buildin

George Francis 13 Jun 13, 2022
A plugin that uses multiple block, Tailwind and is fully integrated into the standard build process

Tailwind CSS Custom Block Plugin This repo leverages the @wordpress/scripts package and it's ability to use PostCSS to introduce TailwindCSS to the bu

Ryan Welcher 3 Dec 31, 2022
High performance and SEO friendly lazy loader for images (responsive and normal), iframes and more, that detects any visibility changes triggered through user interaction, CSS or JavaScript without configuration.

lazysizes lazysizes is a fast (jank-free), SEO-friendly and self-initializing lazyloader for images (including responsive images picture/srcset), ifra

Alexander Farkas 16.6k Jan 1, 2023
This repo contains utility tools for manipulating files, process images and automation.

utility-tools-cli This repo contains utility tools which makes life lil bit easier. Features Rename Files in a Folder with the convention you want. Re

Wasim Raja 4 Nov 4, 2022
An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

Obsidian Publish This plugin cloud upload all local images embedded in markdown to specified remote image store (support imgur only, currently) and ex

Addo.Zhang 7 Dec 13, 2022
Journeys is a django based community-focused website that allows users to bookmark URLs (through chrome extension) and share their journeys through timelines.

Journeys is a django based community-focused website that allows users to bookmark URLs (through chrome extension) and share their journeys through timelines. A timeline is a collection of links that share a common topic or a journey of building and learning something new. Users can create timelines, share them publicly, and explore resources.

Students' Web Committee 14 Jun 13, 2022
Using a RPI 3b+ to create a PT camera accessible through Windows browser and controllable through MQTT

web-camera_PT A Web flask server converts the MJPEG stream from RPI to JPG img using opencv, then display in browser. Controls added to move Camera in

null 11 Dec 20, 2022
A jQuery Single/Multi Select plugin which can be used on almost any device

jquery.sumoselect jquery.sumoselect.js - A beautiful cross device Single/Multi Select jQuery Select plugin. A jQuery plugin that progressively enhance

Hemant Negi 537 Dec 7, 2022
Convert arrays to bitmask representations to quickly operate with them through bitwise operations. (uses JSBI)

Bitmask Set (JSBI) Convert arrays to bitmask representations to quickly operate with them through bitwise operations. In general, this approach can be

codescrum 4 Sep 7, 2022
Twitter Text Libraries. This code is used at Twitter to tokenize and parse text to meet the expectations for what can be used on the platform.

twitter-text This repository is a collection of libraries and conformance tests to standardize parsing of Tweet text. It synchronizes development, tes

Twitter 2.9k Jan 8, 2023
this is a single-page web application. we built a book website where the user can add , remove and display books. we used modules to implement these functionalities. also, we used the Date class to display the date and time.

Awsome Books In this Project, we have built A Books websites. Built With ?? HTML CSS javascript Git & Github Live Demo Here you can find the live Demo

Nedjwa Bouraiou 10 Aug 3, 2022
A frida script that can be used to find the public RSA key used in the native libakamaibmp.so shared library, seen in version 3.3.0 of Akamai BMP

Akamai BMP - RSA/AES Frida Hook This Frida script can be used to find the public RSA key used in the encryption process in Akamai BMP 3.3.0. Since ver

yog 31 Jan 8, 2023
This template can be used as a starting point for any minting dApp on the Elrond Network.

Minting dApp Template Made by Giants & NF-Tim by Creative Tim Live Demo This is a dApp template based on erd-next-starter by Giants & soft-ui-dashboar

Giants Labs 11 Dec 23, 2022
A simple tap test runner that can be used by any javascript interpreter.

just-tap A simple tap test runner that can be used in any client/server javascript app. Installation npm install --save-dev just-tap Usage import cre

Mark Wylde 58 Nov 7, 2022
Eleventy base project

Project base for Eleventy Sites Includes static page template, blog post template, post feed, pagination, tags and RSS. Also includes gulp setup for S

Andy Bell 70 Dec 21, 2022