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 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 ava from 4.3.3 to 5.0.1

    Bump ava from 4.3.3 to 5.0.1

    Bumps ava from 4.3.3 to 5.0.1.

    Release notes

    Sourced from ava's releases.

    v5.0.1

    Despite the major version bump this is a relatively minor release. Node.js 12 is no longer supported. The type definitions are now distributed to be compatible with TypeScript 4.7 or newer.

    npm install --save-dev ava
    

    Breaking Changes

    Improvements

    New Contributors

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

    v5.0.0

    Despite the major version bump this is a relatively minor release. Node.js 12 is no longer supported. The type definitions are now distributed to be compatible with TypeScript 4.7 or newer.

    It's available as a pre-release under the next tag for the next few weeks:

    npm install --save-dev [email protected]
    

    Breaking Changes

    • AVA now requires Node.js 14.19, 16.15 or 18. avajs/ava#3043
    • Type definition distribution is no longer compatible with TypeScript versions before 4.7. avajs/ava#3041
    • We're now exporting types rather than interfaces. avajs/ava#3096

    Improvements

    ... (truncated)

    Commits
    • 7007f13 5.0.1
    • 48dcafa Update dependencies; more type tweaks
    • 3ebe65c Re-organize types for maximum compatibility
    • 2d3f394 Update to the browser testing recipe to use jsdom directly
    • 52b2270 Cap idle timeouts to the maximum possible value
    • d84dbc1 5.0.0
    • 797287a Improve test result accessibility
    • cc10b0c Count timeouts separately from the timed out tests
    • ea597d8 Detect process.exit() called from tests
    • 4b03662 Work around os.cpus() returning an empty array on unsupported platforms
    • Additional commits viewable 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.25.0 to 8.26.0

    Bump eslint from 8.25.0 to 8.26.0

    Bumps eslint from 8.25.0 to 8.26.0.

    Release notes

    Sourced from eslint's releases.

    v8.26.0

    Features

    • 4715787 feat: check Object.create() in getter-return (#16420) (Yuki Hirasawa)
    • 28d1902 feat: no-implicit-globals supports exported block comment (#16343) (Sosuke Suzuki)
    • e940be7 feat: Use ESLINT_USE_FLAT_CONFIG environment variable for flat config (#16356) (Tomer Aberbach)
    • dd0c58f feat: Swap out Globby for custom globbing solution. (#16369) (Nicholas C. Zakas)

    Bug Fixes

    • df77409 fix: use baseConfig constructor option in FlatESLint (#16432) (Milos Djermanovic)
    • 33668ee fix: Ensure that glob patterns are matched correctly. (#16449) (Nicholas C. Zakas)
    • 740b208 fix: ignore messages without a ruleId in getRulesMetaForResults (#16409) (Francesco Trotta)
    • 8f9759e fix: --ignore-pattern in flat config mode should be relative to cwd (#16425) (Milos Djermanovic)
    • 325ad37 fix: make getRulesMetaForResults return a plain object in trivial case (#16438) (Francesco Trotta)
    • a2810bc fix: Ensure that directories can be unignored. (#16436) (Nicholas C. Zakas)
    • 35916ad fix: Ensure unignore and reignore work correctly in flat config. (#16422) (Nicholas C. Zakas)

    Documentation

    • 651649b docs: Core concepts page (#16399) (Ben Perlmutter)
    • 631cf72 docs: note --ignore-path not supported with flat config (#16434) (Andy Edwards)
    • 1692840 docs: fix syntax in examples for new config files (#16427) (Milos Djermanovic)
    • d336cfc docs: Document extending plugin with new config (#16394) (Ben Perlmutter)

    Chores

    Changelog

    Sourced from eslint's changelog.

    v8.26.0 - October 21, 2022

    • df77409 fix: use baseConfig constructor option in FlatESLint (#16432) (Milos Djermanovic)
    • 33668ee fix: Ensure that glob patterns are matched correctly. (#16449) (Nicholas C. Zakas)
    • 651649b docs: Core concepts page (#16399) (Ben Perlmutter)
    • 4715787 feat: check Object.create() in getter-return (#16420) (Yuki Hirasawa)
    • e917a9a ci: add node v19 (#16443) (Koichi ITO)
    • 740b208 fix: ignore messages without a ruleId in getRulesMetaForResults (#16409) (Francesco Trotta)
    • 8f9759e fix: --ignore-pattern in flat config mode should be relative to cwd (#16425) (Milos Djermanovic)
    • 325ad37 fix: make getRulesMetaForResults return a plain object in trivial case (#16438) (Francesco Trotta)
    • a2810bc fix: Ensure that directories can be unignored. (#16436) (Nicholas C. Zakas)
    • 631cf72 docs: note --ignore-path not supported with flat config (#16434) (Andy Edwards)
    • 1692840 docs: fix syntax in examples for new config files (#16427) (Milos Djermanovic)
    • 28d1902 feat: no-implicit-globals supports exported block comment (#16343) (Sosuke Suzuki)
    • 35916ad fix: Ensure unignore and reignore work correctly in flat config. (#16422) (Nicholas C. Zakas)
    • 4b70b91 chore: Add VS Code issues link (#16423) (Nicholas C. Zakas)
    • e940be7 feat: Use ESLINT_USE_FLAT_CONFIG environment variable for flat config (#16356) (Tomer Aberbach)
    • d336cfc docs: Document extending plugin with new config (#16394) (Ben Perlmutter)
    • dd0c58f feat: Swap out Globby for custom globbing solution. (#16369) (Nicholas C. Zakas)
    • 232d291 chore: suppress a Node.js deprecation warning (#16398) (Koichi ITO)
    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.24.0 to 8.25.0

    Bump eslint from 8.24.0 to 8.25.0

    Bumps eslint from 8.24.0 to 8.25.0.

    Release notes

    Sourced from eslint's releases.

    v8.25.0

    Features

    • 173e820 feat: Pass --max-warnings value to formatters (#16348) (Brandon Mills)
    • 6964cb1 feat: remove support for ignore files in FlatESLint (#16355) (Milos Djermanovic)
    • 1cc4b3a feat: id-length counts graphemes instead of code units (#16321) (Sosuke Suzuki)

    Documentation

    • 90c6028 docs: Conflicting fixes (#16366) (Ben Perlmutter)
    • 5a3fe70 docs: Add VS to integrations page (#16381) (Maria Jos√© Solano)
    • 49bd1e5 docs: remove unused link definitions (#16376) (Nick Schonning)
    • 3bd380d docs: typo cleanups for docs (#16374) (Nick Schonning)
    • b3a0837 docs: remove duplicate words (#16378) (Nick Schonning)
    • a682562 docs: add BigInt to new-cap docs (#16362) (Sosuke Suzuki)
    • f6d57fb docs: Update docs README (#16352) (Ben Perlmutter)
    • 7214347 docs: fix logical-assignment-operators option typo (#16346) (Jonathan Wilsson)

    Chores

    • 1f78594 chore: upgrade @‚Äčeslint/eslintrc@‚Äč1.3.3 (#16397) (Milos Djermanovic)
    • 8476a9b chore: Remove CODEOWNERS (#16375) (Nick Schonning)
    • 720ff75 chore: use "ci" for Dependabot commit message (#16377) (Nick Schonning)
    • 42f5479 chore: bump actions/stale from 5 to 6 (#16350) (dependabot[bot])
    • e5e9e27 chore: remove jsdoc dev dependency (#16344) (Milos Djermanovic)
    Changelog

    Sourced from eslint's changelog.

    v8.25.0 - October 7, 2022

    • 1f78594 chore: upgrade @‚Äčeslint/eslintrc@‚Äč1.3.3 (#16397) (Milos Djermanovic)
    • 173e820 feat: Pass --max-warnings value to formatters (#16348) (Brandon Mills)
    • 8476a9b chore: Remove CODEOWNERS (#16375) (Nick Schonning)
    • 720ff75 chore: use "ci" for Dependabot commit message (#16377) (Nick Schonning)
    • 90c6028 docs: Conflicting fixes (#16366) (Ben Perlmutter)
    • 5a3fe70 docs: Add VS to integrations page (#16381) (Maria Jos√© Solano)
    • 6964cb1 feat: remove support for ignore files in FlatESLint (#16355) (Milos Djermanovic)
    • 49bd1e5 docs: remove unused link definitions (#16376) (Nick Schonning)
    • 42f5479 chore: bump actions/stale from 5 to 6 (#16350) (dependabot[bot])
    • 3bd380d docs: typo cleanups for docs (#16374) (Nick Schonning)
    • b3a0837 docs: remove duplicate words (#16378) (Nick Schonning)
    • a682562 docs: add BigInt to new-cap docs (#16362) (Sosuke Suzuki)
    • 1cc4b3a feat: id-length counts graphemes instead of code units (#16321) (Sosuke Suzuki)
    • f6d57fb docs: Update docs README (#16352) (Ben Perlmutter)
    • e5e9e27 chore: remove jsdoc dev dependency (#16344) (Milos Djermanovic)
    • 7214347 docs: fix logical-assignment-operators option typo (#16346) (Jonathan Wilsson)
    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.23.1 to 8.24.0

    Bump eslint from 8.23.1 to 8.24.0

    Bumps eslint from 8.23.1 to 8.24.0.

    Release notes

    Sourced from eslint's releases.

    v8.24.0

    Features

    • 1729f9e feat: account for sourceType: "commonjs" in the strict rule (#16308) (Milos Djermanovic)
    • b0d72c9 feat: add rule logical-assignment-operators (#16102) (fnx)
    • f02bcd9 feat: array-callback-return support findLast and findLastIndex (#16314) (Sosuke Suzuki)

    Documentation

    • 2c152ff docs: note false positive Object.getOwnPropertyNames in prefer-reflect (#16317) (AnnAngela)
    • bf7bd88 docs: fix warn severity description for new config files (#16324) (Nitin Kumar)
    • 8cc0bbe docs: use more clean link syntax (#16309) (Percy Ma)
    • 6ba269e docs: fix typo (#16288) (jjangga0214)

    Chores

    • 131e646 chore: Upgrade @‚Äčhumanwhocodes/config-array for perf (#16339) (Nicholas C. Zakas)
    • 504fe59 perf: switch from object spread to Object.assign when merging globals (#16311) (Milos Djermanovic)
    Changelog

    Sourced from eslint's changelog.

    v8.24.0 - September 23, 2022

    • 131e646 chore: Upgrade @‚Äčhumanwhocodes/config-array for perf (#16339) (Nicholas C. Zakas)
    • 2c152ff docs: note false positive Object.getOwnPropertyNames in prefer-reflect (#16317) (AnnAngela)
    • bf7bd88 docs: fix warn severity description for new config files (#16324) (Nitin Kumar)
    • 504fe59 perf: switch from object spread to Object.assign when merging globals (#16311) (Milos Djermanovic)
    • 1729f9e feat: account for sourceType: "commonjs" in the strict rule (#16308) (Milos Djermanovic)
    • b0d72c9 feat: add rule logical-assignment-operators (#16102) (fnx)
    • f02bcd9 feat: array-callback-return support findLast and findLastIndex (#16314) (Sosuke Suzuki)
    • 8cc0bbe docs: use more clean link syntax (#16309) (Percy Ma)
    • 6ba269e docs: fix typo (#16288) (jjangga0214)
    Commits
    • a578780 8.24.0
    • f2cfacd Build: changelog update for 8.24.0
    • 131e646 chore: Upgrade @‚Äčhumanwhocodes/config-array for perf (#16339)
    • 2c152ff docs: note false positive Object.getOwnPropertyNames in prefer-reflect (#16...
    • bf7bd88 docs: fix warn severity description for new config files (#16324)
    • 504fe59 perf: switch from object spread to Object.assign when merging globals (#16311)
    • 1729f9e feat: account for sourceType: "commonjs" in the strict rule (#16308)
    • b0d72c9 feat: add rule logical-assignment-operators (#16102)
    • f02bcd9 feat: array-callback-return support findLast and findLastIndex (#16314)
    • 8cc0bbe docs: use more clean link syntax (#16309)
    • Additional commits viewable 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
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
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 4 May 7, 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 Nov 28, 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 6 Oct 9, 2022
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
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 10 May 17, 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 536 Nov 19, 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
Simple jQuery plugin that will allow users to zoom in your images, perfect for product images and galleries.

Image Zoom (jQuery) Plugin Simple jQuery plugin that will allow users to zoom in your images, perfect for product images and galleries that is less th

Mario Duarte 8 Aug 3, 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 Nov 21, 2022
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 24 Nov 9, 2022
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 9 Nov 15, 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 68 Nov 9, 2022