保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
"use strict";
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
 
var _postcss = _interopRequireDefault(require("postcss"));
 
var _icssUtils = require("icss-utils");
 
var _utils = require("../utils");
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
var _default = _postcss.default.plugin('postcss-icss-parser', options => async css => {
  const importReplacements = Object.create(null);
  const {
    icssImports,
    icssExports
  } = (0, _icssUtils.extractICSS)(css);
  const imports = new Map();
  const tasks = []; // eslint-disable-next-line guard-for-in
 
  for (const url in icssImports) {
    const tokens = icssImports[url];
 
    if (Object.keys(tokens).length === 0) {
      // eslint-disable-next-line no-continue
      continue;
    }
 
    let normalizedUrl = url;
    let prefix = '';
    const queryParts = normalizedUrl.split('!');
 
    if (queryParts.length > 1) {
      normalizedUrl = queryParts.pop();
      prefix = queryParts.join('!');
    }
 
    const request = (0, _utils.requestify)((0, _utils.normalizeUrl)(normalizedUrl, true), options.rootContext);
 
    const doResolve = async () => {
      const {
        resolver,
        context
      } = options;
      const resolvedUrl = await (0, _utils.resolveRequests)(resolver, context, [...new Set([normalizedUrl, request])]);
      return {
        url: resolvedUrl,
        prefix,
        tokens
      };
    };
 
    tasks.push(doResolve());
  }
 
  const results = await Promise.all(tasks);
 
  for (let index = 0; index <= results.length - 1; index++) {
    const {
      url,
      prefix,
      tokens
    } = results[index];
    const newUrl = prefix ? `${prefix}!${url}` : url;
    const importKey = newUrl;
    let importName = imports.get(importKey);
 
    if (!importName) {
      importName = `___CSS_LOADER_ICSS_IMPORT_${imports.size}___`;
      imports.set(importKey, importName);
      options.imports.push({
        importName,
        url: options.urlHandler(newUrl),
        icss: true,
        index
      });
      options.api.push({
        importName,
        dedupe: true,
        index
      });
    }
 
    for (const [replacementIndex, token] of Object.keys(tokens).entries()) {
      const replacementName = `___CSS_LOADER_ICSS_IMPORT_${index}_REPLACEMENT_${replacementIndex}___`;
      const localName = tokens[token];
      importReplacements[token] = replacementName;
      options.replacements.push({
        replacementName,
        importName,
        localName
      });
    }
  }
 
  if (Object.keys(importReplacements).length > 0) {
    (0, _icssUtils.replaceSymbols)(css, importReplacements);
  }
 
  for (const name of Object.keys(icssExports)) {
    const value = (0, _icssUtils.replaceValueSymbols)(icssExports[name], importReplacements);
    options.exports.push({
      name,
      value
    });
  }
});
 
exports.default = _default;