Fast & Robust Front-End Micro-framework based on modern standards

Overview

hello, slim.js

Build Status

Chat on gitter

Hello slim.js - your declarative web components library

import { Slim } from 'slim-js';
import { tag, template } from 'slim-js/decorators';

@tag('my-awesome-element')
@template(`
<button @click="this.inc()"> + </button>
<span>{{this.count}}</span>
<button @click="this.dec()"> - </button>
`)
class extends Slim {
  count = 0;
  inc() { this.count++ }
  dec() { this.count-- }
}

Read the documentation

Slim is an ultra fast, native and elegant library for Web Components development

It's fast. Very fast.

Super fast. It leverages the native browser's API to manipulate DOM using templates, with custom directives. Imagine vue or angular's strctured tempaltes combined with react's ease of use - combined, faster and lighter.

What's the difference? Why slim.js?

It's native. It has no black magic, no compilers and no external dependencies. It aims for fast performance, low CPU usage, using the native HTMLElement class inheritence and CustomElementsRegistry.

It works anywhere. You can combine slim.js in any other framework, combine any framework into slim.js app or any other combination.

You can write fully functional classes with complex code, or create pure "render-only" components without writing a single function.

Opt-in/Opt-out anything. The core is super small (2927 bytes gzipped), every directive is a self-contained module. Opt-in if you like. Pick your preferences for using (or not) shadow-dom. Work directly with properties on the element or create a view-model layer.

It's super easy to learn. Anything in your template that is wrapped with bars (example: <div>{{ this.user.name }}</div> ) is the actual code running. And it runs only when the used properties change. Changes affects only the specific DOM nodes that are bound. It means you can manipulate DOM manually without bothering the core, and vice-versa. No virtual dom engine or anything like that.

What about bundling, typescript, or other tools?

It just works. The library is written in javascript, and it has index.d.ts to support strongly-typed projects. It also provides access to it's internals, if you want to hack things out.

What are "directives" anyway?

Directives are middlewares that executes code on your template whenever you have attributes in your markup. For example, if you opt-in for the property-directive, any attribute that starts with a period (i.e. <some-element .user="{{this.user}}"></some-element>) will trigger the property-directive into action: this.user will project as a user property into some-element. Another example is the foreach-directive: You can map arrays or iterables to repeating elements. For example

<ul>
  <li *foreach="{{this.users.slice(0, 50)}}">
    <img src="{{item.picture}}" />
    <span class="user-name">{{item.name}}</span>
  </li>
</ul>

slim.js provides the following out-of-the-box directives:

  • custom-code (default)<form disabled="{{this.isFormReady(this.data)}}">...</form> or <div style="{{this.getStyleFor(this.user)}}">Welcome, {{this.user.name}}!</div>
  • property <img .src="{{this.imageSource}}">
  • events <input @change="this.handleInputChange(event)">
  • if <div *if="{{!this.isLoaded}}" class="spinner">Loading...</div>
  • foreach <li *foreach="{{this.someArray}}">{{item.value}}</li>
  • reference <form #ref="myForm">...</form> will create a property targeting the DOM element
  • repeat (optional, faster, with lazy memory release) <li *repeat>

All the directives (excluding custom-code) are optional - each is a standalone module. Choose the directives you use, or write your own!

What about plugins?

You can hook into any slim.js component's lifecycle using plugins. You plugin will be notified for step of the lifecycle, so you can add you own custom code or change things on-the-go.

Isn't a runtime library slower than compiled libraries?

Well, slim.js is an exception. Your custom code is memoized, and every piece of in-template code is created only once, can be even shared accross components. The core is very small and efficient, and releasing bound nodes is done progressively as background-tasks, keeping the user interface responsive as first priority. Modern browsers supports requestIdleCallback, so if supported, the removed elements will be released slowly and progressively.

Is this another framework?

Yes, and No. It's a very thin, fast, and extensible core library for writing custom-elements, powered by optional plugins and directives. You have the power to decide. It adds the firepower of a framework to your web-components, using the browser's native capabilities — as defined by W3C standards.

Here's what you get:

  • HTML markup with custom inlined code.
  • Reactive components: If a property is in the template, it becomes reactive. The core wraps it with a getter and setter function (and keeping your original one intact, if exists). No need to declare, it's derived from the tempalte.
  • Data binding: data changes triggers changes in the rendered HTML.
  • Directive system: Register your own directives.
  • Plugins: Add global lifecycle hooks for every slim.js component.
  • It feels like a framework (in a good way), but without the limits of a classic framework. It works everywhere, you can pick your own framework.
  • Low-footprint: it's less than 3KB gzipped. Directives are optional.
  • Single file for core functionality, and you're good to go.
  • No dependencies, everything is based on native browsers' API. Choose your own tools.
  • (Optional) Decorators for ES7/Next syntax, via Babel included.
  • Works with mixins from other component libraries, such as Polymer, out of the box.

Standards-compliant

  • ES6
  • Web Components V1
  • No transpiling or compilation required

No Setup required. It just works.

Use native (or bundlers) import statements, load from the CDN, or use the non-module (commonJS) file.

Documentation

The official website is built with Slim.js (with source maps). Check out the source code, see it for yourself.

Migration from older versions

Version 3 introduced the plugins.

Version 4 introduced the es modules.

Version 5 has new engine, directive system and plugin system.

es modules

import { Slim } from 'slim-js';

IIFE (no-modules)

<script src="slim-js/dist/index.legacy.js"></script>

Access a global Slim object.

HTML + Modules

<script type="module" src="slim-js/dist/index.js"></script>

Contibutors are welcome.

USE THE PLATFORM

Would you like to spend some good money on a good library and support the project? Contact [email protected].

Comments
  • Deprecate v0 custom element reactions

    Deprecate v0 custom element reactions

    https://github.com/eavichay/slim.js/commit/bfcb46438f0cf24af90f8e1ad13412dfe28ba9f4

    If we are going to migrate to v1 registration I feel we can deprecate the hooks for the v0 callbacks (i.e. attached / detached) . Will make slim a touch slimmer. ;-) <3

    Let me know if you need me to PR this.

    opened by snuggs 12
  • Data binding to SVG properties throws error

    Data binding to SVG properties throws error

    Hi, I am new to SlimJs and trying to use the data binding for some SVG attributes.

    Slim.tag(
    	'maze-board',
    	`<svg class="maze-grid" bind:width="maxWidth" bind:height="maxHeight"></svg>`,
    	class MazeBoard extends Slim {
    		onBeforeCreated() {
    			this.maxWidth = 1000;
    			this.maxHeight = 1000;
    		}
    	});
    

    But I a m getting the following error:

    Slim.js:990 Uncaught TypeError: Cannot assign to read only property 'width' of object '#' at Slim.js:990 at Function.commit (Slim.js:386) at Function.commit (Slim.js:414) at HTMLElement._executeBindings (Slim.js:528) at doRender (Slim.js:647)

    Am I doing something wrong here?

    opened by rmeshksar 11
  • Model passed in using 'create' plugin does not retain changes

    Model passed in using 'create' plugin does not retain changes

    I'm using the approach described here: http://slimjs.com/#/plugins to supply the component with data. The model is just a JS object. When my components make changes, these are not being reflected in the model. The components are working with the changes (for example, an s:if condition will react when the value of the property changes), but I don't see that in the original model. Am I missing something?

    Here's my usage scenario:

    @tag('parent-component')
    @template(`
    <child-component bind:items="parentProp.path.items"></child-component>
    `
    export default class ParentComp extends Slim {
      parentProp = {}
    }
    

    My child component has a property items and its template contains a list with s:repeat="items as item". Before the parent-component element is added to DOM, I do:

    let data = {
      path: {
        items: [ ... ]
      }
    }
    Slim.plugin('create', element => {
      if (element.localName === 'parent-component') {
        element.parentProp = data
      }
    })
    

    Could it be because the binding to items in the child is too deep? i.e. parentProp.path.items. I have other scenarios where the binding is shallower (e.g. parentProp.prop) and this works.

    opened by hagen 11
  • How to do constructor injection?

    How to do constructor injection?

    I want to do custom templates through a by overwriting the template getter. And I want to inject an EventManager (potentially I will inject other things as well)

    I get a Illegal constructor TypeError if I do that.

    example.ts

    import { Slim } from "slim-js";
    import { tag, useShadow, template } from "slim-js/Decorators";
    import { TemplateProvider } from './../../utilities/templates'
    import { EventManager} from './../../utilities/events'
    
    @tag('sws-example')
    @useShadow(false)
    export class ExampleComponent extends Slim {
    
        public events: EventManager
    
        name: string;
        
        items: any[]
        
        public onBeforeCreated(): void {
            this.name = "example";
            this.items = [
                {name: 'Apple', id: 1},
                {name: 'Orange', id: 2},
                {name: 'Banana', id: 3}
            ];
        }
    
        public selectItem(event: Event): void {
            // invoked!
            let itemId = $(event.target).attr('id');
            alert('Selected item '+itemId);
        }
        
    }
    
    @tag('sws-item')
    @useShadow(true)
    @template(`
    <button><slim-content></slim-content></button>
    `)
    export class ChildComponent extends Slim {
    
    }
    
    

    and in main.ts I create the component like this:

    import { template } from 'slim-js/Decorators'
    ...
    
    
            template(templateProvider.templates['sws-example'])(ExampleComponent)
            let eC = new ExampleComponent()
    // Setter injection trying alternatives
            eC.events = events
    

    This error message I still get:

    Slim.min.js:1 Uncaught TypeError: Illegal constructor
        at ExampleComponent._CustomElement (Slim.min.js:1)
        at ExampleComponent.Slim (Slim.min.js:1)
        at new ExampleComponent (example.ts:8)
        at main.ts:25
        at HTMLDocument.<anonymous> (zepto.js:446)
    

    Is there any way to achieve something like this?

    Thank you very much,

    Tilman

    opened by mandymozart 11
  • s:if Conditional rendering not working

    s:if Conditional rendering not working

    While using SlimJS for a project I need the s:if conditional rendering feature. I converted the example code to the no decorator syntax like so to test it out:

    Slim.tag("my-tag",
            '<div s:if={{myBoolean}}>Now you see me</div>' +
           '<div s:if={{!myBoolean}}>Now you do not!</div>',
           class MyTag extends Slim {
               onBeforeCreated() {
               this.myBoolean = true;
                   setInterval(() => {
                       this.myBoolean = !this.myBoolean
                   }, 500)
              }
         }
    )
    

    And found that both divs render immediately. So it seems like the conditional rendering feature is not working right now.

    I'm importing slimJS this way:

    <script type="module">
            import {Slim} from 'https://unpkg.com/[email protected]/Slim.js';
    
    
    </script>
    

    And just putting the <my-tag></my-tag> element right into the body of index.html

    Code repo in case it helps diagnosing: https://github.com/JamieVaughn/mtg/tree/master/slim

    opened by JamieVaughn 9
  • Props passed to computed binding in s:repeat has no args

    Props passed to computed binding in s:repeat has no args

    Hi again, trying to use computed bindings inside a s:repeat. See line {{calcPercentage}}

    @tag('custom-table')
    @template(`
    <div>
     <table>
        <tbody>
          <tr s:repeat="items as item">
            <th>
              <a click="navToEdit(item)" bind>{{item.name}}</a>
            </th>
            <td bind>{{item.status}}</td>
            <td bind>{{calcPercentage(item)}}%</td>
          </tr>
        </tbody>
      </table>
    </div>`
    export default class TableComponent extends Slim {
      items = []
      onBeforeCreated() {
        items = [
          { name: 'first', status: 'ok', num: 50 },
          { name: 'second', status: 'ok', num: 80 },
        ]
      }
      calcPercentage(item) {
        // item is 'undefined'
        return ( item.num / 100 ) * 100 // just an example of trying to access props in 'item'
      }
      ...
    }
    

    calcPercentage is not getting passed the item from s:repeat. item is undefined in the method. Why is item not passed to the function in the computed binding?

    opened by hagen 8
  • Forbidden tag names

    Forbidden tag names

    I get a SyntaxError: An invalid or illegal string was specified exception when I try to use

    @tag('app')
    @template('<p>App</p>')
    @useShadow(true)
    export default class App extends Slim {
      //
    }
    

    or

    @tag('main')
    @template('<p>App</p>')
    @useShadow(true)
    export default class App extends Slim {
      //
    }
    

    while

    @tag('my-app')
    @template('<p>App</p>')
    @useShadow(true)
    export default class MyApp extends Slim {
      //
    }
    

    works fine.

    I don't understand why "app" and "main" tags cause exception, but if it can't be fixed it should at least be reflected in the documentation, I think, because these names are the first ones to come to mind for the whole application component. :)

    question wontfix 
    opened by gabriel-fallen 6
  • ES6 version with good export

    ES6 version with good export

    Is it possible to change the Slim.es6.js file ? You are using an UMD module inside Slim.js It could be better to export directly Slim class in Slim.es6.js, and add your UMD stuff during ES5 build.

    enhancement good-for-beginners good-first-issue 
    opened by vogloblinsky 6
  • Documentation update

    Documentation update

    It would be very helpful if documentation (at main site) contained a link to Slim Webpack Biolerplate project.

    Also, Web Components polyfill at the Getting Started page references version 1.0.17 of webcomponents-lite.js, and the Boilerplate project references version 1.2.7, while the last version is 1.3.3. Does it make sense to update to this version?

    opened by gabriel-fallen 5
  • @attribute throws 'cannot read property push of autoBoundAttributes'

    @attribute throws 'cannot read property push of autoBoundAttributes'

    image

    This is in combination with Webpack and Babel, using the following code

    @tag('some-element')
    class A extends Slim {
      @attribute
      myProperty // bounds to my-property attribute automatically.
    }
    
    bug Safari Firefox Edge feature experimental 
    opened by David-Mulder 5
  • Scoped css

    Scoped css

    I am currently using Riot.js in my Web App Clibu and like the look off slim.js, especially as it doesn't require a compile step and child component access seems simpler.

    Riot.js enables css to be specified along with the component markup, scoping it to the component.

    I couldn't see any mention of css in your doc's - is this possible?

    enhancement question Safari Firefox Internet Exploder Edge 
    opened by nevf 5
  • Bump json5 from 2.2.0 to 2.2.3 in /doc-site

    Bump json5 from 2.2.0 to 2.2.3 in /doc-site

    Bumps json5 from 2.2.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump json5 from 2.2.0 to 2.2.3

    Bump json5 from 2.2.0 to 2.2.3

    Bumps json5 from 2.2.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • What is the point of this library?

    What is the point of this library?

    You know you can create components using just Javascript functions, right? And that such components are isomorphic and also works server side? With literally zero (0) kb package size or extra libraries needed?

    function myComponent(props) {
      return `<my-component>${props.name}</my-component>`
    }
    
    opened by eldoy 0
  • [package] Set 'default' as last keys on exports entries

    [package] Set 'default' as last keys on exports entries

    This is necessary because of webpack specs: https://webpack.js.org/guides/package-exports/#conditional-syntax

    This fix the build with a webpack v5 project using slim.js

    opened by Murloc6 0
  • Bump qs from 6.5.2 to 6.5.3 in /doc-site

    Bump qs from 6.5.2 to 6.5.3 in /doc-site

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump minimatch from 3.0.4 to 3.1.2 in /doc-site

    Bump minimatch from 3.0.4 to 3.1.2 in /doc-site

    Bumps minimatch from 3.0.4 to 3.1.2.

    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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v3.3.4)
Owner
slim.js
Fast and robust micro-framework and tooling for web components
slim.js
distributed-nginx nginx k8s docker micro front-end

distributed-nginx (分布式 nginx) ?? 适用于微前端的去中心化分布式部署 nginx 服务器. 特性 支持 前端服务上线下线 自动更新微前端模块配置 完全实现了分布式去中心化 支持【微前端组】 支持 redis 协议和 multicast-dns 协议 支持 命名空间 Ge

wuyun 1 Feb 25, 2022
Micro.publish is an Obsidian plugin to publish notes directly to Micro.blog, written in TypeScript

Micro.publish Micro.publish is a community maintained plugin for Obsidian to publish notes to a Micro.blog blog. Installing This plugin will be availa

Otavio Cordeiro 14 Dec 9, 2022
Fast and robust triangle-triangle intersection test with high precision for cross and coplanar triangles based on the algorithm by Devillers & Guigue.

fast-triangle-triangle-intersection Fast and robust triangle-triangle intersection test with high precision for cross and coplanar triangles based on

Technology and knowledge for interaction 10 Nov 15, 2022
front-end framework for fast and powerful configuration of utilities and intuitive UI

front-end framework for fast and powerful configuration of utilities and intuitive UI Getting Started with Vector → Getting started A variety of optio

Skill Class 12 Jun 29, 2022
front-end framework for fast and powerful configuration of utilities and intuitive UI

front-end framework for fast and powerful configuration of utilities and intuitive UI Getting Started with Vector → Getting started A variety of optio

DE:MO 12 Jun 29, 2022
Personal Blog - a project developed with Angular for the front-end interface and Wordpress for the back-end API served with Docker containers

PersonalBlog This project was generated with Angular CLI version 13.0.1. Front-end Interface Development server Run ng serve or ng serve --configurati

null 9 Oct 5, 2022
Pass trust from a front-end Algorand WalletConnect session, to a back-end web service

AlgoAuth Authenticate to a website using only your Algorand wallet Pass trust from a front-end Algorand WalletConnect session, to a back-end web servi

Nullable Labs 16 Dec 15, 2022
It consists of a recreation of Twitter, to put into practice both Front-end and Back-end knowledge by implementing the MERN Stack together with other technologies to add more value to the project.

Twitter-Clone_Back-end ✨ Demo. ?? About the project. ?? Descriptions. It consists of a recreation of Twitter, to put into practice knowledge of both F

Mario Quirós Luna 5 Apr 12, 2022
It consists of a recreation of Twitter, to put into practice knowledge of both Front-end and Back-end implementing the MERN Stack along with other technologies to add more value to the project.

Twitter-Clone_Front-end ✨ Demo. Login Home Profile Message Notifications Deployed in: https://twitter-clone-front-end.vercel.app/ ?? About the project

Mario Quirós Luna 5 Jun 26, 2022
Web-Technology with Aj Zero Coding. In this tutorial we learn front-end and back-end development.

Installation through NPM: The jQWidgets framework is available as NPM package: jQuery, Javascript, Angular, Vue, React, Web Components: https://www

Ajay Dhangar 3 Nov 19, 2022
A common front-end/Service Worker-based Key/Value database based on CacheStorage

Cache-DB A common front-end/Service Worker-based Key/Value database based on CacheStorage > const db = new CacheDB('ChenYFanDB') < undefined > await d

CrazyCreativeDream 4 Sep 30, 2022
🗂 The perfect Front-End Checklist for modern websites and meticulous developers

Front-End Checklist The Front-End Checklist is an exhaustive list of all elements you need to have / to test before launching your website / HTML page

David Dias 63.6k Jan 7, 2023
📚 Study guide and introduction to the modern front end stack.

Grab Front End Guide Credits: Illustration by @yangheng This guide has been cross-posted on Free Code Camp. Grab is Southeast Asia (SEA)'s leading tra

Grab 14.7k Jan 3, 2023
Raaghu is a micro frontend design system for modern web apps

Raaghu is a micro frontend design system for modern web apps, which is an open source, Bootstrap 5.x enabled collection of reusable elements and components guided by clear standards, capable of giving the designers the necessary tools to develop beautiful, responsive and engaging product experiences. Single source of truth for truly scalable and consistent UI language for your application.

Wai Technologies 160 Dec 30, 2022
An easy-to-read, quick reference for JS best practices, accepted coding standards, and links around the Web

Feel free to contribute! Where? http://www.jstherightway.org Why? Today we have a bunch of websites running JavaScript. I think we need a place to put

BrazilJS 8.5k Jan 1, 2023
JavaScript library of crypto standards.

crypto-js JavaScript library of crypto standards. Node.js (Install) Requirements: Node.js npm (Node.js package manager) npm install crypto-js Usage ES

Brix 13.8k Jan 1, 2023
An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards in TypeScript.

v0.1.0 (experimental) An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards in TypeScript. Read the documentati

wes4m 32 Dec 27, 2022
Shikhar 4 Oct 9, 2022
A modular front-end framework - inspired by the server-side and Web Components.

The NX framework Home page, Docs NX is a modular front-end framework - built with ES6 and Web Components. The building blocks of NX are the core, the

NX framework 464 Dec 5, 2022