UNPKG

jss-cache

Version:

JSS plugin that caches the rules and delivers insane performance.

128 lines (99 loc) 3.9 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["jssCache"] = factory(); else root["jssCache"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * Tiny WeakMap like cache using arrays. * Required because we have frozen style objects in dev, which are not extensible, * so we can't put some key into that object. * Relies on [].indexOf(Object). */ var Cache = function () { function Cache() { _classCallCheck(this, Cache); this.keys = []; this.data = []; } _createClass(Cache, [{ key: "get", value: function get(key) { var index = this.keys.indexOf(key); return index === -1 ? null : this.data[index]; } }, { key: "set", value: function set(key, value) { this.keys.push(key); this.data.push(value); } }]); return Cache; }(); exports["default"] = function () { var cache = new Cache(); function onCreateRule(name, decl, _ref) { var parent = _ref.parent; return parent ? cache.get(parent.rules.raw[name]) : null; } function onProcessRule(rule) { var _rule$options = rule.options, sheet = _rule$options.sheet, parent = _rule$options.parent; if (!parent || sheet && sheet.options.link) { return; } var originalStyle = parent.rules.raw[rule.key]; if (!cache.get(originalStyle)) cache.set(originalStyle, rule); } return { onCreateRule: onCreateRule, onProcessRule: onProcessRule }; }; /***/ }) /******/ ]) }); ;