Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fela

Package Overview
Dependencies
Maintainers
2
Versions
123
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fela - npm Package Compare versions

Comparing version 11.5.0-rc.0 to 11.5.0

3

es/createRenderer.js

@@ -36,2 +36,3 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

styleNodeAttributes: config.styleNodeAttributes || {},
propertyPriority: config.propertyPriority || {},
ruleOrder: [/^:link/, /^:visited/, /^:hover/, /^:focus-within/, /^:focus/, /^:active/],

@@ -246,3 +247,3 @@ selectorPrefix: validateSelectorPrefix(config.selectorPrefix),

var declaration = cssifyDeclaration(property, value);
var selector = generateCSSSelector(className, pseudo, config.specificityPrefix);
var selector = generateCSSSelector(className, pseudo, config.specificityPrefix, renderer.propertyPriority[property]);

@@ -249,0 +250,0 @@ var change = {

@@ -95,2 +95,3 @@ 'use strict';

styleNodeAttributes: config.styleNodeAttributes || {},
propertyPriority: config.propertyPriority || {},
ruleOrder: [/^:link/, /^:visited/, /^:hover/, /^:focus-within/, /^:focus/, /^:active/],

@@ -305,3 +306,3 @@ selectorPrefix: (0, _validateSelectorPrefix2.default)(config.selectorPrefix),

var declaration = (0, _cssifyDeclaration2.default)(property, value);
var selector = (0, _felaUtils.generateCSSSelector)(className, pseudo, config.specificityPrefix);
var selector = (0, _felaUtils.generateCSSSelector)(className, pseudo, config.specificityPrefix, renderer.propertyPriority[property]);

@@ -308,0 +309,0 @@ var change = {

{
"name": "fela",
"version": "11.5.0-rc.0",
"version": "11.5.0",
"description": "State-Driven Styling in JavaScript",

@@ -42,6 +42,6 @@ "typings": "index.d.ts",

"fast-loops": "^1.0.0",
"fela-utils": "^11.5.0-rc.0",
"fela-utils": "^11.5.0",
"isobject": "^3.0.1"
},
"gitHead": "6d457d39e69e1471bddaea8591c50745f95070d9"
"gitHead": "dc183b4df113206c2d7b6f28901e63fef16c7b8c"
}

@@ -1,2 +0,2 @@

<h1><img alt="Fela" src="docs/res/logo.png" width="203"/></h1>
<h1><img alt="Fela" src="website/public/logo.png" width="203"/></h1>

@@ -13,22 +13,21 @@ Fela is a small, high-performant and framework-agnostic toolbelt to handle state-driven styling in JavaScript.<br>

## Support Us
Support Robin Weser's work on Fela and its ecosystem directly via [**Patreon**](https://www.patreon.com/robinweser).
## Installation
```sh
yarn add fela
```
You may alternatively use `npm i --save fela`.
Support Robin Weser's work on Fela and its ecosystem directly via [**GitHub Sponsors**](https://github.com/sponsors/robinweser).
## Benefits
* Predictable Styling
* Scoped Atomic CSS
* Minimal Bundle Size
* No Specificity Issues
* No Naming Conflicts
* Framework-Agnostic
* Huge Ecosystem
* RTL Support
- Predictable Styling
- Scoped Atomic CSS
- Minimal Bundle Size
- No Specificity Issues
- No Naming Conflicts
- Framework-Agnostic
- Huge Ecosystem
- RTL Support
> [Read more about the benefits](https://fela.js.org/docs/latest/intro/benefits)!
## The Gist
Fela's core principle is to consider [style as a function of state](http://fela.js.org/docs/introduction/Principles.html).<br>
Fela's core principle is to consider [style as a function of state](http://fela.js.org/docs/latest/intro/principles).<br>
The whole API and all plugins and bindings are built on that idea.<br>

@@ -44,3 +43,3 @@ It is reactive and auto-updates once registered to the DOM.<br>

// that returns an object of style declarations
const rule = state => ({
const rule = (state) => ({
textAlign: 'center',

@@ -54,7 +53,6 @@ padding: '5px 10px',

fontSize: state.fontSize + 2 + 'pt',
boxShadow: '0 0 2px rgb(70, 70, 70)'
}
boxShadow: '0 0 2px rgb(70, 70, 70)',
},
})
const renderer = createRenderer()

@@ -65,3 +63,3 @@

const className = renderer.renderRule(rule, {
fontSize: 14
fontSize: 14,
}) // => a b c d e f

@@ -71,2 +69,3 @@ ```

The generated CSS output would look like this:
```CSS

@@ -82,43 +81,29 @@ .a { text-align: center }

### Primitive Components
If you're using Fela, you're most likely also using React.<br>
Using the [React bindings](packages/react-fela), you get powerful APIs to create primitive components.<br>
> **Read**: [Usage with React](http://fela.js.org/docs/guides/UsageWithReact.html) for a full guide.
> **Read**: [Usage with React](http://fela.js.org/docs/latest/guides/usage-with-react) for a full guide.
```javascript
import React from 'react'
import { RendererProvider, useFela } from 'react-fela'
import { createRenderer } from 'fela';
import { render } from 'react-dom'
```jsx
import * as React from 'react'
import { useFela } from 'react-fela'
const rule = state => ({
const rule = ({ fontSize }) => ({
textAlign: 'center',
padding: '5px 10px',
// directly use the state to compute style values
fontSize: state.fontSize + 'pt',
// directly use the props to compute style values
fontSize: fontSize + 'pt',
borderRadius: 5,
// deeply nest media queries and pseudo classes
':hover': {
fontSize: state.fontSize + 2 + 'pt',
boxShadow: '0 0 2px rgb(70, 70, 70)'
}
fontSize: fontSize + 2 + 'pt',
boxShadow: '0 0 2px rgb(70, 70, 70)',
},
})
const Button = ({ children, ...props }) => {
const { css } = useFela(props)
return <button className={css(rule)}>{children}</button>;
function Button({ fontSize, children }) {
const { css } = useFela({ fontSize })
return <button className={css(rule)}>{children}</button>
}
const renderer = createRenderer()
render(
<RendererProvider renderer={renderer}>
<>
<Button>Basic Button</Button>
<Button fontSize={18}>Big Button</Button>
</>
</RendererProvider>,
document.body
)
```

@@ -129,83 +114,82 @@

## Examples
* [Fela + React](http://fela.js.org/docs/introduction/Examples.html#react) ([source](examples/example-react))
* [React Styleguidist](http://fela.js.org/docs/introduction/Examples.html#styleguidist) ([source](examples/example-with-styleguidist))
* [React Native](http://fela.js.org/docs/introduction/Examples.html#react-native) ([source](examples/example-react-native))
* [ReasonReact](https://github.com/astrada/bs-react-fela-examples)
* [Next](https://github.com/zeit/next.js/tree/master/examples/with-fela)
* [Fela + Preact](http://fela.js.org/docs/introduction/Examples.html#preact) ([source](examples/example-preact))
* [Fela + Inferno](http://fela.js.org/docs/introduction/Examples.html#inferno) ([source](examples/example-inferno))
* [Fela + Angular 2](http://fela.js.org/docs/introduction/Examples.html#angular-2) ([source](examples/example-angular2))
* [TypeScript](http://fela.js.org/docs/introduction/Examples.html#typescript) ([source](examples/example-angular2-typescript))
* [Fela + HyperScript](https://github.com/ahdinosaur/hyper-fela#example)
* [Fela + Cycle](https://github.com/wcastand/cycle-fela-example)
* [Fela + Next.js](https://github.com/vercel/next.js/tree/master/examples/with-fela)
- [Fela + React](http://fela.js.org/docs/introduction/Examples.html#react) ([source](examples/example-react))
- [React Styleguidist](http://fela.js.org/docs/introduction/Examples.html#styleguidist) ([source](examples/example-with-styleguidist))
- [React Native](http://fela.js.org/docs/introduction/Examples.html#react-native) ([source](examples/example-react-native))
- [ReasonReact](https://github.com/astrada/bs-react-fela-examples)
- [Next](https://github.com/zeit/next.js/tree/master/examples/with-fela)
- [Fela + Preact](http://fela.js.org/docs/introduction/Examples.html#preact) ([source](examples/example-preact))
- [Fela + Inferno](http://fela.js.org/docs/introduction/Examples.html#inferno) ([source](examples/example-inferno))
- [Fela + HyperScript](https://github.com/ahdinosaur/hyper-fela#example)
- [Fela + Cycle](https://github.com/wcastand/cycle-fela-example)
- [Fela + Next.js](https://github.com/vercel/next.js/tree/master/examples/with-fela)
## Documentation
* [Introduction](http://fela.js.org/docs/Introduction.html)
* [Basics](http://fela.js.org/docs/Basics.html)
* [Advanced](http://fela.js.org/docs/Advanced.html)
* [Usage Guides](http://fela.js.org/docs/UsageGuides.html)
* [Recipes](http://fela.js.org/docs/Recipes.html)
* [API Reference](http://fela.js.org/docs/API.html)
* [Migration Guide](http://fela.js.org/docs/MigrationGuide.html)
* [Changelog](http://fela.js.org/docs/Changelog.html)
* [FAQ](http://fela.js.org/docs/FAQ.html)
* [Feedback](http://fela.js.org/docs/Feedback.html)
* [Thanks](http://fela.js.org/docs/Thanks.html)
- [Getting Started](http://fela.js.org/docs/latest/intro/getting-started)
- [Ecosystem](http://fela.js.org/docs/latest/intro/ecosystem)
- [Migration Guide](http://fela.js.org/docs/latest/extra/migration)
- [Changelog](https://github.com/robinweser/fela/releases)
- [FAQ](http://fela.js.org/docs/latest/extra/faq)
## Workshop
If you are coming from CSS and want to learn JavaScript Styling with Fela, there is a full-feature [fela-workshop](https://github.com/tajo/fela-workshop) which demonstrates typical Fela use cases. It teaches all important parts, step by step with simple examples. If you already know other CSS in JS solutions and are just switching to Fela, you might not need to do the whole workshop, but it still provides useful information to get started quickly.
## Talks
* [**CSS in JS: The Good & Bad Parts**](https://www.youtube.com/watch?v=95M-2YzyTno) ([Slides](https://speakerdeck.com/robinweser/css-in-js-the-good-and-bad-parts))<br> - *by [Robin Weser](https://twitter.com/robinweser)*
* [**CSS in JS: Patterns**](https://www.webexpo.net/prague2018/talk?id=css-in-js-patterns)<br> - *by [Vojtech Miksu](https://twitter.com/vmiksu)*
- [**CSS in JS: The Good & Bad Parts**](https://www.youtube.com/watch?v=95M-2YzyTno) ([Slides](https://speakerdeck.com/robinweser/css-in-js-the-good-and-bad-parts))<br> - _by [Robin Weser](https://twitter.com/robinweser)_
- [**CSS in JS: Patterns**](https://www.webexpo.net/prague2018/talk?id=css-in-js-patterns)<br> - _by [Vojtech Miksu](https://twitter.com/vmiksu)_
## Posts
* [**Style as a Function of State**](https://medium.com/@robinweser/styles-as-functions-of-state-1885627a63f7#.6k6i4kdch)<br> - *by [Robin Weser](https://twitter.com/robinweser)*
* [**CSS in JS: The Argument Refined**](https://medium.com/@steida/css-in-js-the-argument-refined-471c7eb83955#.3otvkubq4)<br> - *by [Daniel Steigerwald](https://twitter.com/steida)*
* [**What is Fela?**](https://davidsinclair.io/thoughts/what-is-fela)<br> - *by [David Sinclair](https://davidsinclair.io)*
* [**Choosing a CSS in JS library**](https://gist.github.com/troch/c27c6a8cc47b76755d848c6d1204fdaf#file-choosing-a-css-in-js-library-md)<br> - *by [Thomas Roch](https://twitter.com/tcroch)*
* [**Introducing Fela 6.0**](https://medium.com/felajs/the-future-of-fela-d4dad2efad00)<br> - *by [Robin Weser](https://twitter.com/robinweser)*
* [**A journey into CSS and then into CSS-in-JS**](https://www.zeolearn.com/magazine/a-journey-into-css-and-then-into-css-in-js)<br> - *by [Prithvi Raju](https://twitter.com/aga5tya)*
* [**CSS In JS — Future of styling components**](https://we-are.bookmyshow.com/css-in-js-future-of-styling-components-ad315eb5448b)<br> - *by [Manjula Dube](https://twitter.com/manjula_dube)*
* [**Styling Components with React Fela**](https://alligator.io/react/styling-with-react-fela/)<br> - *by [Josh Sherman](https://twitter.com/joshtronic)*
* [**The Future of Fela**](https://medium.com/@robinweser/introducing-fela-6-0-289c84b52dd5)<br> - *by [Robin Weser](https://twitter.com/robinweser)*
- [**Style as a Function of State**](https://medium.com/@robinweser/styles-as-functions-of-state-1885627a63f7#.6k6i4kdch)<br> - _by [Robin Weser](https://twitter.com/robinweser)_
- [**CSS in JS: The Argument Refined**](https://medium.com/@steida/css-in-js-the-argument-refined-471c7eb83955#.3otvkubq4)<br> - _by [Daniel Steigerwald](https://twitter.com/steida)_
- [**What is Fela?**](https://davidsinclair.io/thoughts/what-is-fela)<br> - _by [David Sinclair](https://davidsinclair.io)_
- [**Choosing a CSS in JS library**](https://gist.github.com/troch/c27c6a8cc47b76755d848c6d1204fdaf#file-choosing-a-css-in-js-library-md)<br> - _by [Thomas Roch](https://twitter.com/tcroch)_
- [**Introducing Fela 6.0**](https://medium.com/felajs/the-future-of-fela-d4dad2efad00)<br> - _by [Robin Weser](https://twitter.com/robinweser)_
- [**A journey into CSS and then into CSS-in-JS**](https://www.zeolearn.com/magazine/a-journey-into-css-and-then-into-css-in-js)<br> - _by [Prithvi Raju](https://twitter.com/aga5tya)_
- [**CSS In JS — Future of styling components**](https://we-are.bookmyshow.com/css-in-js-future-of-styling-components-ad315eb5448b)<br> - _by [Manjula Dube](https://twitter.com/manjula_dube)_
- [**Styling Components with React Fela**](https://alligator.io/react/styling-with-react-fela/)<br> - _by [Josh Sherman](https://twitter.com/joshtronic)_
- [**The Future of Fela**](https://medium.com/@robinweser/introducing-fela-6-0-289c84b52dd5)<br> - _by [Robin Weser](https://twitter.com/robinweser)_
## Ecosystem
There are tons of useful packages maintained within this repository including plugins, enhancers, bindings and tools that can be used together with Fela. Check the [Ecosystem](http://fela.js.org/docs/introduction/Ecosystem.html) documentation for a quick overview.
There are tons of useful packages maintained within this repository including plugins, enhancers, bindings and tools that can be used together with Fela. Check the [Ecosystem](http://fela.js.org/docs/latest/intro/ecosystem) documentation for a quick overview.
## Community
Apart from all the packages managed within this repository, there are many community third-party projects that are worth mentioning:
* [aesthetic](https://github.com/milesj/aesthetic) - React style and theme layer with Fela support
* [base-styling-components](https://github.com/pitr12/base-styling-components) - Abstract Box and Text Components
* [bs-react-fela](https://github.com/astrada/bs-react-fela) - BuckleScript / ReasonReact bindings for Fela
* [catstack](https://github.com/root-systems/catstack) - A modular mad science framework for teams working on production web apps
* [css-in-js-playground](https://github.com/DSchau/css-in-js-playground) - A simple playground for CSS in JS solutions
* [cf-ui](https://github.com/cloudflare/cf-ui) - Cloudflare UI Framework
* [counter-component-with-react-mobx-fela](https://github.com/Mercateo/counter-component-with-react-mobx-fela) - Counter Component using Fela
* [cycle-fela](https://github.com/wcastand/cycle-fela) - Cycle bindings for Fela
* [dogstack](https://github.com/root-systems/dogstack) - A popular-choice grab-bag framework for teams working on production web apps
* [fela-components](https://github.com/arturmuller/fela-components) - Styling library for React and Fela
* [fela-react-helpers](https://github.com/vlad-zhukov/fela-react-helpers) - A set of useful helpers for Fela
* [fela-react-prop](https://github.com/codepunkt/fela-react-prop) - Generate class names for fela style rule and apply them as property on a wrapped component
* [fela-styles-connector](https://github.com/dustin-H/fela-styles-connector) - Simplified react-fela `connect` with auto-bound styles
* [frejya](https://github.com/benoneal/freyja): Pass styles as props to components
* [gatsby-plugin-fela](https://github.com/mmintel/gatsby-plugin-fela) - Integrates fela with [Gatsby](http://gatsbyjs.org)
* [hyper-fela](https://github.com/ahdinosaur/hyper-fela) - HyperScript bindings for Fela
* [htz-frontend](https://github.com/Haaretz/htz-frontend) - Source for Haaretz frontend app(s)
* [kilvin](https://github.com/robinweser/kilvin) - Primitive React Layout Components with Fela
* [olymp](https://github.com/olymp/olymp) - Create and build a next gen app using node, react, cssInJS and other cool stuff
* [preact-fela-simple](https://github.com/pshev/preact-fela-simple) - Super simple Preact bindings for Fela
* [reason-react-starter](https://github.com/drejohnson/reason-react-starter) - A ReasonReact starter kit using Fela
* [storybook-addon-props-fela](https://github.com/Kilix/storybook-addon-props-fela): Document the props of your Fela components in storybook.
* [superslider](https://github.com/adamgiacomelli/superslider) - Slider Component using Fela
* [telaviv](https://github.com/dustin-H/telaviv) - React Universal Rendering
* [vashet](https://github.com/derHowie/vashet) - ClojureScript wrapper for Fela
* [veel](https://github.com/queckezz/veel) - Base react styling components using fela with a design system
* [vue-fela](https://github.com/dustin-H/vue-fela) - Vue bindings for Fela
* [black-box](https://github.com/rocketstation/black-box) - combines behavior, presentation, structure in one place & creates all-in-one components using only JS syntax
- [aesthetic](https://github.com/milesj/aesthetic) - React style and theme layer with Fela support
- [base-styling-components](https://github.com/pitr12/base-styling-components) - Abstract Box and Text Components
- [bs-react-fela](https://github.com/astrada/bs-react-fela) - BuckleScript / ReasonReact bindings for Fela
- [catstack](https://github.com/root-systems/catstack) - A modular mad science framework for teams working on production web apps
- [css-in-js-playground](https://github.com/DSchau/css-in-js-playground) - A simple playground for CSS in JS solutions
- [cf-ui](https://github.com/cloudflare/cf-ui) - Cloudflare UI Framework
- [counter-component-with-react-mobx-fela](https://github.com/Mercateo/counter-component-with-react-mobx-fela) - Counter Component using Fela
- [cycle-fela](https://github.com/wcastand/cycle-fela) - Cycle bindings for Fela
- [dogstack](https://github.com/root-systems/dogstack) - A popular-choice grab-bag framework for teams working on production web apps
- [fela-components](https://github.com/arturmuller/fela-components) - Styling library for React and Fela
- [fela-react-helpers](https://github.com/vlad-zhukov/fela-react-helpers) - A set of useful helpers for Fela
- [fela-react-prop](https://github.com/codepunkt/fela-react-prop) - Generate class names for fela style rule and apply them as property on a wrapped component
- [fela-styles-connector](https://github.com/dustin-H/fela-styles-connector) - Simplified react-fela `connect` with auto-bound styles
- [frejya](https://github.com/benoneal/freyja): Pass styles as props to components
- [gatsby-plugin-fela](https://github.com/mmintel/gatsby-plugin-fela) - Integrates fela with [Gatsby](http://gatsbyjs.org)
- [hyper-fela](https://github.com/ahdinosaur/hyper-fela) - HyperScript bindings for Fela
- [htz-frontend](https://github.com/Haaretz/htz-frontend) - Source for Haaretz frontend app(s)
- [kilvin](https://github.com/robinweser/kilvin) - Primitive React Layout Components with Fela
- [olymp](https://github.com/olymp/olymp) - Create and build a next gen app using node, react, cssInJS and other cool stuff
- [preact-fela-simple](https://github.com/pshev/preact-fela-simple) - Super simple Preact bindings for Fela
- [reason-react-starter](https://github.com/drejohnson/reason-react-starter) - A ReasonReact starter kit using Fela
- [storybook-addon-props-fela](https://github.com/Kilix/storybook-addon-props-fela): Document the props of your Fela components in storybook.
- [superslider](https://github.com/adamgiacomelli/superslider) - Slider Component using Fela
- [telaviv](https://github.com/dustin-H/telaviv) - React Universal Rendering
- [vashet](https://github.com/derHowie/vashet) - ClojureScript wrapper for Fela
- [veel](https://github.com/queckezz/veel) - Base react styling components using fela with a design system
- [vue-fela](https://github.com/dustin-H/vue-fela) - Vue bindings for Fela
- [black-box](https://github.com/rocketstation/black-box) - combines behavior, presentation, structure in one place & creates all-in-one components using only JS syntax
## Support
Got a question? Come and join us on [Spectrum](https://spectrum.chat/fela)! <br>

@@ -255,4 +239,5 @@ We'd love to help out. We also highly appreciate any feedback.<br>

## License
Fela is licensed under the [MIT License](http://opensource.org/licenses/MIT).<br>
Documentation is licensed under [Creative Commons License](http://creativecommons.org/licenses/by/4.0/).<br>
Created with ♥ by [@robinweser](http://weser.io) and all the great contributors.

@@ -7,2 +7,2 @@ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Fela",[],t):"object"==typeof exports?exports.Fela=t():e.Fela=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=10)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){for(var r=0,o=e.length;r<o;++r)n=t(n,e[r],r,o,e);return n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t="";for(var n in e){var r=e[n];"string"!=typeof r&&"number"!=typeof r||(t&&(t+=";"),t+=(0,i.default)(n,r))}return t};var r,o=n(2),i=(r=o)&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,i.default)(e)+":"+t};var r,o=n(8),i=(r=o)&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){for(var n=0,r=e.length;n<r;++n)t(e[n],n,r,e)}},function(e,t,n){"use strict";

* Released under the MIT License.
*/e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){for(var r in e)n=t(n,e[r],r,e);return n}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e){return e.filter((function(t,n){return e.lastIndexOf(t)===n}))}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){for(var n=0,i=arguments.length<=1?0:arguments.length-1;n<i;++n){var u=n+1<1||arguments.length<=n+1?void 0:arguments[n+1];for(var f in u){var s=u[f],c=t[f];if(c&&s){if(Array.isArray(c)){t[f]=a(c.concat(s));continue}if(Array.isArray(s)){t[f]=a([c].concat(o(s)));continue}if("object"===r(s)){t[f]=e({},c,s);continue}}t[f]=s}}return t}},,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,i.default)(e)};var r,o=n(9),i=(r=o)&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";n.r(t);var r=/[A-Z]/g,o=/^ms-/,i={};function a(e){return"-"+e.toLowerCase()}t.default=function(e){if(i.hasOwnProperty(e))return i[e];var t=e.replace(r,a);return i[e]=o.test(t)?"-"+t:t}},function(e,t,n){"use strict";n.r(t),n.d(t,"createRenderer",(function(){return z})),n.d(t,"combineRules",(function(){return q})),n.d(t,"enhance",(function(){return Q}));var r=n(2),o=n.n(r),i=n(3),a=n.n(i),u=n(0),f=n.n(u),s=n(4),c=n.n(s);function l(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return e.plugins.length>0?f()(e.plugins,(function(t,o){return o(t,n,e,r)}),t):t}var d=/^(:|\[|>|&)/;function p(e){return d.test(e)}function y(e){return"@media"===e.substr(0,6)}function m(e,t){return 0===e.length?t:e+" and "+t}function h(e){return"@supports"===e.substr(0,9)}function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"";return o+r+n+e+t}var v=/undefined|null/,b=/url/;var _=n(1),x=n.n(_);var O=n(5),w=n.n(O);function A(e){return w()(e,(e,t,n)=>`${e}${n}{${x()(t)}}`,"")}const P="abcdefghijklmnopqrstuvwxyz",j=P.length;function S(e,t=(()=>!0)){const n=function e(t,n=""){return t<=j?P[t-1]+n:e(t/j|0,P[t%j]+n)}(e());return t(n)?n:S(e,t)}function N(e){return"data:"===e.substr(0,5)}function C(e){return N(e)?e:`'${e}'`}const M={".woff":"woff",".woff2":"woff2",".eot":"embedded-opentype",".ttf":"truetype",".otf":"opentype",".svg":"svg",".svgz":"svg"},$={"image/svg+xml":"svg","application/x-font-woff":"woff","application/font-woff":"woff","application/x-font-woff2":"woff2","application/font-woff2":"woff2","font/woff2":"woff2","application/octet-stream":"truetype","application/x-font-ttf":"truetype","application/x-font-truetype":"truetype","application/x-font-opentype":"opentype","application/vnd.ms-fontobject":"embedded-opentype","application/font-sfnt":"sfnt"};function I(e=[],t=[]){const n=f()(t,(e,t,n)=>`${e}${n>0?",":""}local(${C(t)})`,""),r=f()(e,(e,t,n)=>{const r=n>0?",":"",o=function(e){if(N(e)){let t="";for(let n=5;;n++){const r=e.charAt(n);if(";"===r||","===r)break;t+=r}const n=$[t];if(n)return n;console.warn(`A invalid base64 font was used. Please use one of the following mime type: ${Object.keys($).join(", ")}.`)}else{let t="";for(let n=e.length-1;;n--){if("."===e.charAt(n)){const r=e.slice(n,e.length);t=r.includes("?")?r.split("?",1)[0]:r;break}}const n=M[t];if(n)return n;console.warn(`A invalid font-format was used in "${e}". Use one of these: ${Object.keys(M).join(", ")}.`)}return""}(t);return`${e}${r}url(${C(t)}) format('${o}')`},"");return`${n}${n.length>0&&r.length>0?",":""}${r}`}function k(e){return-1===e.indexOf("ad")}const T=/^[a-z_][a-z0-9-_]*$/gi;function R(e=""){return e.length>0&&null===e.match(T)&&console.error(`An invalid selectorPrefix (${e}) has been used to create a new Fela renderer.\nIt must only contain a-Z, 0-9, - and _ while it must start with either _ or a-Z.\nSee http://fela.js.org/docs/advanced/RendererConfiguration.html`),e}function F(e=[]){return function(t,n){return-1===e.indexOf(n)?-1===e.indexOf(t)?0:-1:-1===e.indexOf(t)?1:e.indexOf(t)-e.indexOf(n)}}function z(e={}){let t={listeners:[],keyframePrefixes:e.keyframePrefixes||["-webkit-","-moz-"],plugins:e.plugins||[],sortMediaQuery:e.sortMediaQuery||F(e.mediaQueryOrder),supportQueryOrder:e.supportQueryOrder||[],styleNodeAttributes:e.styleNodeAttributes||{},ruleOrder:[/^:link/,/^:visited/,/^:hover/,/^:focus-within/,/^:focus/,/^:active/],selectorPrefix:R(e.selectorPrefix),specificityPrefix:e.specificityPrefix||"",filterClassName:e.filterClassName||k,devMode:e.devMode||!1,uniqueRuleIdentifier:0,uniqueKeyframeIdentifier:0,nodes:{},scoreIndex:{},cache:{},getNextRuleIdentifier:()=>++t.uniqueRuleIdentifier,getNextKeyframeIdentifier:()=>++t.uniqueKeyframeIdentifier,renderRule:(e,n={})=>t._renderStyle(e(n,t),n),renderKeyframe(e,n={}){const r=e(n,t),o=l(t,r,"KEYFRAME",n),i=A(o);if(!t.cache.hasOwnProperty(i)){const e=t.selectorPrefix+t.generateAnimationName(n),r={type:"KEYFRAME",keyframe:function(e,t,n=[""],r){const o=r||A(e);return f()(n,(e,n)=>`${e}@${n}keyframes ${t}{${o}}`,"")}(o,e,t.keyframePrefixes,i),name:e};t.cache[i]=r,t._emitChange(r)}return t.cache[i].name},generateAnimationName:e=>"k"+t.getNextKeyframeIdentifier(),renderFont(e,n,r={}){const{localAlias:o,...i}=r,a=e+JSON.stringify(r),u=function(e){return"string"==typeof e?[e]:Array.isArray(e)?e.slice():[]}(o);if(!t.cache.hasOwnProperty(a)){const r='"'===(f=e).charAt(0)?f:`"${f}"`,o={type:"FONT",fontFace:function(e){return`@font-face{${x()(e)}}`}({...i,src:I(n,u),fontFamily:r}),fontFamily:r};t.cache[a]=o,t._emitChange(o)}var f;return t.cache[a].fontFamily},renderStatic(e,n){const r=function(e,t){return"string"==typeof e?e:t?t+JSON.stringify(e):""}(e,n);if(!t.cache.hasOwnProperty(r)){const o={type:"STATIC",css:function(e,t){if("string"==typeof e)return e.replace(/\s{2,}/g,"");const n=l(t,e,"STATIC");return x()(n)}(e,t),selector:n};t.cache[r]=o,t._emitChange(o)}},subscribe:e=>(t.listeners.push(e),{unsubscribe:()=>t.listeners.splice(t.listeners.indexOf(e),1)}),clear(){t.uniqueRuleIdentifier=0,t.uniqueKeyframeIdentifier=0,t.cache={},t._emitChange({type:"CLEAR"})},_renderStyle(e={},n={}){const r=l(t,e,"RULE",n);return t._renderStyleToClassNames(r).slice(1)},_renderStyleToClassNames({_className:e,...n},r="",o="",i=""){let a=e?" "+e:"";for(const e in n){const s=n[e];if(c()(s))if(p(e))a+=t._renderStyleToClassNames(s,r+("&"===(u=e).charAt(0)?u.slice(1):u),o,i);else if(y(e)){const n=m(o,e.slice(6).trim());a+=t._renderStyleToClassNames(s,r,n,i)}else if(h(e)){const n=m(i,e.slice(9).trim());a+=t._renderStyleToClassNames(s,r,o,n)}else console.warn(`The object key "${e}" is not a valid nested key in Fela.\nMaybe you forgot to add a plugin to resolve it?\nCheck http://fela.js.org/docs/basics/Rules.html#styleobject for more information.`);else{let n=g(e,s,r,o,i);if(t.cacheMap){if(!t.cacheMap.hasOwnProperty(n)){const a={property:e,value:s,pseudo:r,media:o,support:i},u=f()(t.optimizedPlugins,(e,n)=>n(e,t),a),c=g(u.property,u.value,u.pseudo,u.media,u.support);t._renderStyleToCache(c,u.property,u.value,u.pseudo,u.media,u.support),t.cacheMap[n]=c}n=t.cacheMap[n]}t.cache.hasOwnProperty(n)||t._renderStyleToCache(n,e,s,r,o,i);const u=t.cache[n].className;u&&(a+=" "+u)}}var u;return a},_renderStyleToCache(n,r,i,a,u,f){if(function(e){return null==e||"string"==typeof e&&v.test(e)&&!b.test(e)}(i))return void(t.cache[n]={className:""});const s=t.selectorPrefix+t.generateClassName(r,i,a,u,f),c=o()(r,i),l={type:"RULE",className:s,selector:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return n+"."+e+t}(s,a,e.specificityPrefix),declaration:c,pseudo:a,media:u,support:f};t.cache[n]=l,t._emitChange(l)},generateClassName:(e,n,r,o,i)=>S(t.getNextRuleIdentifier,t.filterClassName),_emitChange(e){a()(t.listeners,t=>t(e))}};return t.keyframePrefixes.push(""),e.optimizeCaching&&(t.optimizedPlugins=t.plugins.filter(e=>e.optimized).map(e=>e.optimized),t.optimizedPlugins.length>0&&(t.plugins=t.plugins.filter(e=>!e.optimized),t.cacheMap={})),e.enhancers&&a()(e.enhancers,e=>{t=e(t)}),t}var E=n(6),K=n.n(E);function q(...e){return(t,n)=>f()(e,(e,r)=>{const o=function e(t,n,r){return Array.isArray(t)?e(q(...t),n,r):"function"==typeof t?t(n,r):t}(r,t,n);return o&&e._className&&(o._className=e._className+(o._className?" "+o._className:"")),K()(e,o)},{})}function Q(...e){return t=>n=>f()(e,(e,t)=>e=t(e),t(n))}}])}));
*/e.exports=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){for(var r in e)n=t(n,e[r],r,e);return n}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return i(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e){return e.filter((function(t,n){return e.lastIndexOf(t)===n}))}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){for(var n=0,i=arguments.length<=1?0:arguments.length-1;n<i;++n){var u=n+1<1||arguments.length<=n+1?void 0:arguments[n+1];for(var f in u){var s=u[f],c=t[f];if(c&&s){if(Array.isArray(c)){t[f]=a(c.concat(s));continue}if(Array.isArray(s)){t[f]=a([c].concat(o(s)));continue}if("object"===r(s)){t[f]=e({},c,s);continue}}t[f]=s}}return t}},,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,i.default)(e)};var r,o=n(9),i=(r=o)&&r.__esModule?r:{default:r}},function(e,t,n){"use strict";n.r(t);var r=/[A-Z]/g,o=/^ms-/,i={};function a(e){return"-"+e.toLowerCase()}t.default=function(e){if(i.hasOwnProperty(e))return i[e];var t=e.replace(r,a);return i[e]=o.test(t)?"-"+t:t}},function(e,t,n){"use strict";n.r(t),n.d(t,"createRenderer",(function(){return z})),n.d(t,"combineRules",(function(){return q})),n.d(t,"enhance",(function(){return Q}));var r=n(2),o=n.n(r),i=n(3),a=n.n(i),u=n(0),f=n.n(u),s=n(4),c=n.n(s);function l(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return e.plugins.length>0?f()(e.plugins,(function(t,o){return o(t,n,e,r)}),t):t}var d=/^(:|\[|>|&)/;function p(e){return d.test(e)}function y(e){return"@media"===e.substr(0,6)}function m(e,t){return 0===e.length?t:e+" and "+t}function h(e){return"@supports"===e.substr(0,9)}function g(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"";return o+r+n+e+t}var v=/undefined|null/,b=/url/;var _=n(1),x=n.n(_);var O=n(5),w=n.n(O);function P(e){return w()(e,(e,t,n)=>`${e}${n}{${x()(t)}}`,"")}const A="abcdefghijklmnopqrstuvwxyz",j=A.length;function S(e,t=(()=>!0)){const n=function e(t,n=""){return t<=j?A[t-1]+n:e(t/j|0,A[t%j]+n)}(e());return t(n)?n:S(e,t)}function N(e){return"data:"===e.substr(0,5)}function C(e){return N(e)?e:`'${e}'`}const M={".woff":"woff",".woff2":"woff2",".eot":"embedded-opentype",".ttf":"truetype",".otf":"opentype",".svg":"svg",".svgz":"svg"},$={"image/svg+xml":"svg","application/x-font-woff":"woff","application/font-woff":"woff","application/x-font-woff2":"woff2","application/font-woff2":"woff2","font/woff2":"woff2","application/octet-stream":"truetype","application/x-font-ttf":"truetype","application/x-font-truetype":"truetype","application/x-font-opentype":"opentype","application/vnd.ms-fontobject":"embedded-opentype","application/font-sfnt":"sfnt"};function I(e=[],t=[]){const n=f()(t,(e,t,n)=>`${e}${n>0?",":""}local(${C(t)})`,""),r=f()(e,(e,t,n)=>{const r=n>0?",":"",o=function(e){if(N(e)){let t="";for(let n=5;;n++){const r=e.charAt(n);if(";"===r||","===r)break;t+=r}const n=$[t];if(n)return n;console.warn(`A invalid base64 font was used. Please use one of the following mime type: ${Object.keys($).join(", ")}.`)}else{let t="";for(let n=e.length-1;;n--){if("."===e.charAt(n)){const r=e.slice(n,e.length);t=r.includes("?")?r.split("?",1)[0]:r;break}}const n=M[t];if(n)return n;console.warn(`A invalid font-format was used in "${e}". Use one of these: ${Object.keys(M).join(", ")}.`)}return""}(t);return`${e}${r}url(${C(t)}) format('${o}')`},"");return`${n}${n.length>0&&r.length>0?",":""}${r}`}function k(e){return-1===e.indexOf("ad")}const T=/^[a-z_][a-z0-9-_]*$/gi;function R(e=""){return e.length>0&&null===e.match(T)&&console.error(`An invalid selectorPrefix (${e}) has been used to create a new Fela renderer.\nIt must only contain a-Z, 0-9, - and _ while it must start with either _ or a-Z.\nSee http://fela.js.org/docs/advanced/RendererConfiguration.html`),e}function F(e=[]){return function(t,n){return-1===e.indexOf(n)?-1===e.indexOf(t)?0:-1:-1===e.indexOf(t)?1:e.indexOf(t)-e.indexOf(n)}}function z(e={}){let t={listeners:[],keyframePrefixes:e.keyframePrefixes||["-webkit-","-moz-"],plugins:e.plugins||[],sortMediaQuery:e.sortMediaQuery||F(e.mediaQueryOrder),supportQueryOrder:e.supportQueryOrder||[],styleNodeAttributes:e.styleNodeAttributes||{},propertyPriority:e.propertyPriority||{},ruleOrder:[/^:link/,/^:visited/,/^:hover/,/^:focus-within/,/^:focus/,/^:active/],selectorPrefix:R(e.selectorPrefix),specificityPrefix:e.specificityPrefix||"",filterClassName:e.filterClassName||k,devMode:e.devMode||!1,uniqueRuleIdentifier:0,uniqueKeyframeIdentifier:0,nodes:{},scoreIndex:{},cache:{},getNextRuleIdentifier:()=>++t.uniqueRuleIdentifier,getNextKeyframeIdentifier:()=>++t.uniqueKeyframeIdentifier,renderRule:(e,n={})=>t._renderStyle(e(n,t),n),renderKeyframe(e,n={}){const r=e(n,t),o=l(t,r,"KEYFRAME",n),i=P(o);if(!t.cache.hasOwnProperty(i)){const e=t.selectorPrefix+t.generateAnimationName(n),r={type:"KEYFRAME",keyframe:function(e,t,n=[""],r){const o=r||P(e);return f()(n,(e,n)=>`${e}@${n}keyframes ${t}{${o}}`,"")}(o,e,t.keyframePrefixes,i),name:e};t.cache[i]=r,t._emitChange(r)}return t.cache[i].name},generateAnimationName:e=>"k"+t.getNextKeyframeIdentifier(),renderFont(e,n,r={}){const{localAlias:o,...i}=r,a=e+JSON.stringify(r),u=function(e){return"string"==typeof e?[e]:Array.isArray(e)?e.slice():[]}(o);if(!t.cache.hasOwnProperty(a)){const r='"'===(f=e).charAt(0)?f:`"${f}"`,o={type:"FONT",fontFace:function(e){return`@font-face{${x()(e)}}`}({...i,src:I(n,u),fontFamily:r}),fontFamily:r};t.cache[a]=o,t._emitChange(o)}var f;return t.cache[a].fontFamily},renderStatic(e,n){const r=function(e,t){return"string"==typeof e?e:t?t+JSON.stringify(e):""}(e,n);if(!t.cache.hasOwnProperty(r)){const o={type:"STATIC",css:function(e,t){if("string"==typeof e)return e.replace(/\s{2,}/g,"");const n=l(t,e,"STATIC");return x()(n)}(e,t),selector:n};t.cache[r]=o,t._emitChange(o)}},subscribe:e=>(t.listeners.push(e),{unsubscribe:()=>t.listeners.splice(t.listeners.indexOf(e),1)}),clear(){t.uniqueRuleIdentifier=0,t.uniqueKeyframeIdentifier=0,t.cache={},t._emitChange({type:"CLEAR"})},_renderStyle(e={},n={}){const r=l(t,e,"RULE",n);return t._renderStyleToClassNames(r).slice(1)},_renderStyleToClassNames({_className:e,...n},r="",o="",i=""){let a=e?" "+e:"";for(const e in n){const s=n[e];if(c()(s))if(p(e))a+=t._renderStyleToClassNames(s,r+("&"===(u=e).charAt(0)?u.slice(1):u),o,i);else if(y(e)){const n=m(o,e.slice(6).trim());a+=t._renderStyleToClassNames(s,r,n,i)}else if(h(e)){const n=m(i,e.slice(9).trim());a+=t._renderStyleToClassNames(s,r,o,n)}else console.warn(`The object key "${e}" is not a valid nested key in Fela.\nMaybe you forgot to add a plugin to resolve it?\nCheck http://fela.js.org/docs/basics/Rules.html#styleobject for more information.`);else{let n=g(e,s,r,o,i);if(t.cacheMap){if(!t.cacheMap.hasOwnProperty(n)){const a={property:e,value:s,pseudo:r,media:o,support:i},u=f()(t.optimizedPlugins,(e,n)=>n(e,t),a),c=g(u.property,u.value,u.pseudo,u.media,u.support);t._renderStyleToCache(c,u.property,u.value,u.pseudo,u.media,u.support),t.cacheMap[n]=c}n=t.cacheMap[n]}t.cache.hasOwnProperty(n)||t._renderStyleToCache(n,e,s,r,o,i);const u=t.cache[n].className;u&&(a+=" "+u)}}var u;return a},_renderStyleToCache(n,r,i,a,u,f){if(function(e){return null==e||"string"==typeof e&&v.test(e)&&!b.test(e)}(i))return void(t.cache[n]={className:""});const s=t.selectorPrefix+t.generateClassName(r,i,a,u,f),c=o()(r,i),l={type:"RULE",className:s,selector:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=("."+e).repeat(r);return""+n+o+t}(s,a,e.specificityPrefix,t.propertyPriority[r]),declaration:c,pseudo:a,media:u,support:f};t.cache[n]=l,t._emitChange(l)},generateClassName:(e,n,r,o,i)=>S(t.getNextRuleIdentifier,t.filterClassName),_emitChange(e){a()(t.listeners,t=>t(e))}};return t.keyframePrefixes.push(""),e.optimizeCaching&&(t.optimizedPlugins=t.plugins.filter(e=>e.optimized).map(e=>e.optimized),t.optimizedPlugins.length>0&&(t.plugins=t.plugins.filter(e=>!e.optimized),t.cacheMap={})),e.enhancers&&a()(e.enhancers,e=>{t=e(t)}),t}var E=n(6),K=n.n(E);function q(...e){return(t,n)=>f()(e,(e,r)=>{const o=function e(t,n,r){return Array.isArray(t)?e(q(...t),n,r):"function"==typeof t?t(n,r):t}(r,t,n);return o&&e._className&&(o._className=e._className+(o._className?" "+o._className:"")),K()(e,o)},{})}function Q(...e){return t=>n=>f()(e,(e,t)=>e=t(e),t(n))}}])}));
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc