index.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. "use strict";
  2. var _path = _interopRequireDefault(require("path"));
  3. var _isEqualLocals = _interopRequireDefault(require("./runtime/isEqualLocals"));
  4. var _stringifyRequest = require("../../stringify-request");
  5. function _interopRequireDefault(obj) {
  6. return obj && obj.__esModule ? obj : {
  7. default: obj
  8. };
  9. }
  10. const loaderApi = ()=>{};
  11. loaderApi.pitch = function loader(request) {
  12. const loaderSpan = this.currentTraceSpan.traceChild("next-style-loader");
  13. return loaderSpan.traceFn(()=>{
  14. const options = this.getOptions();
  15. const insert = typeof options.insert === "undefined" ? '"head"' : typeof options.insert === "string" ? JSON.stringify(options.insert) : options.insert.toString();
  16. const injectType = options.injectType || "styleTag";
  17. const esModule = typeof options.esModule !== "undefined" ? options.esModule : false;
  18. delete options.esModule;
  19. switch(injectType){
  20. case "linkTag":
  21. {
  22. const hmrCode = this.hot ? `
  23. if (module.hot) {
  24. module.hot.accept(
  25. ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)},
  26. function() {
  27. ${esModule ? "update(content);" : `content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  28. content = content.__esModule ? content.default : content;
  29. update(content);`}
  30. }
  31. );
  32. module.hot.dispose(function() {
  33. update();
  34. });
  35. }` : "";
  36. return `${esModule ? `import api from ${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoLinkTag.js")}`)};
  37. import content from ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)};` : `var api = require(${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoLinkTag.js")}`)});
  38. var content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  39. content = content.__esModule ? content.default : content;`}
  40. var options = ${JSON.stringify(options)};
  41. options.insert = ${insert};
  42. var update = api(content, options);
  43. ${hmrCode}
  44. ${esModule ? "export default {}" : ""}`;
  45. }
  46. case "lazyStyleTag":
  47. case "lazySingletonStyleTag":
  48. {
  49. const isSingleton = injectType === "lazySingletonStyleTag";
  50. const hmrCode = this.hot ? `
  51. if (module.hot) {
  52. if (!content.locals || module.hot.invalidate) {
  53. var isEqualLocals = ${_isEqualLocals.default.toString()};
  54. var oldLocals = content.locals;
  55. module.hot.accept(
  56. ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)},
  57. function () {
  58. ${esModule ? `if (!isEqualLocals(oldLocals, content.locals)) {
  59. module.hot.invalidate();
  60. return;
  61. }
  62. oldLocals = content.locals;
  63. if (update && refs > 0) {
  64. update(content);
  65. }` : `content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  66. content = content.__esModule ? content.default : content;
  67. if (!isEqualLocals(oldLocals, content.locals)) {
  68. module.hot.invalidate();
  69. return;
  70. }
  71. oldLocals = content.locals;
  72. if (update && refs > 0) {
  73. update(content);
  74. }`}
  75. }
  76. )
  77. }
  78. module.hot.dispose(function() {
  79. if (update) {
  80. update();
  81. }
  82. });
  83. }` : "";
  84. return `${esModule ? `import api from ${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoStyleTag.js")}`)};
  85. import content from ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)};` : `var api = require(${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoStyleTag.js")}`)});
  86. var content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  87. content = content.__esModule ? content.default : content;
  88. if (typeof content === 'string') {
  89. content = [[module.id, content, '']];
  90. }`}
  91. var refs = 0;
  92. var update;
  93. var options = ${JSON.stringify(options)};
  94. options.insert = ${insert};
  95. options.singleton = ${isSingleton};
  96. var exported = {};
  97. exported.locals = content.locals || {};
  98. exported.use = function() {
  99. if (!(refs++)) {
  100. update = api(content, options);
  101. }
  102. return exported;
  103. };
  104. exported.unuse = function() {
  105. if (refs > 0 && !--refs) {
  106. update();
  107. update = null;
  108. }
  109. };
  110. ${hmrCode}
  111. ${esModule ? "export default" : "module.exports ="} exported;`;
  112. }
  113. case "styleTag":
  114. case "singletonStyleTag":
  115. default:
  116. {
  117. const isSingleton = injectType === "singletonStyleTag";
  118. const hmrCode = this.hot ? `
  119. if (module.hot) {
  120. if (!content.locals || module.hot.invalidate) {
  121. var isEqualLocals = ${_isEqualLocals.default.toString()};
  122. var oldLocals = content.locals;
  123. module.hot.accept(
  124. ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)},
  125. function () {
  126. ${esModule ? `if (!isEqualLocals(oldLocals, content.locals)) {
  127. module.hot.invalidate();
  128. return;
  129. }
  130. oldLocals = content.locals;
  131. update(content);` : `content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  132. content = content.__esModule ? content.default : content;
  133. if (typeof content === 'string') {
  134. content = [[module.id, content, '']];
  135. }
  136. if (!isEqualLocals(oldLocals, content.locals)) {
  137. module.hot.invalidate();
  138. return;
  139. }
  140. oldLocals = content.locals;
  141. update(content);`}
  142. }
  143. )
  144. }
  145. module.hot.dispose(function() {
  146. update();
  147. });
  148. }` : "";
  149. return `${esModule ? `import api from ${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoStyleTag.js")}`)};
  150. import content from ${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)};` : `var api = require(${(0, _stringifyRequest).stringifyRequest(this, `!${_path.default.join(__dirname, "runtime/injectStylesIntoStyleTag.js")}`)});
  151. var content = require(${(0, _stringifyRequest).stringifyRequest(this, `!!${request}`)});
  152. content = content.__esModule ? content.default : content;
  153. if (typeof content === 'string') {
  154. content = [[module.id, content, '']];
  155. }`}
  156. var options = ${JSON.stringify(options)};
  157. options.insert = ${insert};
  158. options.singleton = ${isSingleton};
  159. var update = api(content, options);
  160. ${hmrCode}
  161. ${esModule ? "export default" : "module.exports ="} content.locals || {};`;
  162. }
  163. }
  164. });
  165. };
  166. module.exports = loaderApi;
  167. //# sourceMappingURL=index.js.map