"use strict"; const __rslib_import_meta_url__ = "u" < typeof document ? new (require('url'.replace('', ''))).URL('file:' + __filename).href : document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href; var __webpack_require__ = {}; __webpack_require__.n = (module)=>{ var getter = module && module.__esModule ? ()=>module.default : ()=>module; return __webpack_require__.d(getter, { a: getter }), getter; }, __webpack_require__.d = (exports1, definition)=>{ for(var key in definition)__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key) && Object.defineProperty(exports1, key, { enumerable: !0, get: definition[key] }); }, __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop), __webpack_require__.r = (exports1)=>{ "u" > typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }), Object.defineProperty(exports1, '__esModule', { value: !0 }); }; var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, { pluginSass: ()=>pluginSass, PLUGIN_SASS_NAME: ()=>PLUGIN_SASS_NAME }); const external_node_module_namespaceObject = require("node:module"), external_node_path_namespaceObject = require("node:path"); var external_node_path_default = __webpack_require__.n(external_node_path_namespaceObject); const external_node_url_namespaceObject = require("node:url"), external_deepmerge_namespaceObject = require("deepmerge"); var external_deepmerge_default = __webpack_require__.n(external_deepmerge_namespaceObject); const external_reduce_configs_namespaceObject = require("reduce-configs"), index_js_namespaceObject = require("../compiled/resolve-url-loader/index.js"); var index_js_default = __webpack_require__.n(index_js_namespaceObject); const GLOBAL_PATCHED_SYMBOL = Symbol('GLOBAL_PATCHED_SYMBOL'); function patchGlobalLocation() { if (!global.location) { let location = Object.freeze({ [GLOBAL_PATCHED_SYMBOL]: !0, href: (0, external_node_url_namespaceObject.pathToFileURL)(process.cwd()).href + external_node_path_default().sep }); global.location = location; } } function unpatchGlobalLocation() { global.location?.[GLOBAL_PATCHED_SYMBOL] && delete global.location; } function patchCompilerGlobalLocation(compiler) { compiler.hooks.run.tap('PatchGlobalLocation', patchGlobalLocation), compiler.hooks.watchRun.tap('PatchGlobalLocation', patchGlobalLocation), compiler.hooks.watchClose.tap('PatchGlobalLocation', unpatchGlobalLocation), compiler.hooks.done.tap('PatchGlobalLocation', unpatchGlobalLocation); } const getResolveUrlJoinFn = ()=>{ let { createJoinFunction, asGenerator, createJoinImplementation, defaultJoinGenerator } = index_js_default(); return createJoinFunction('rsbuild-resolve-join-fn', createJoinImplementation(asGenerator((item, ...rest)=>item.uri.startsWith('.') ? defaultJoinGenerator(item, ...rest) : [ null ]))); }, src_dirname = external_node_path_default().dirname((0, external_node_url_namespaceObject.fileURLToPath)(__rslib_import_meta_url__)), src_require = (0, external_node_module_namespaceObject.createRequire)(__rslib_import_meta_url__), PLUGIN_SASS_NAME = 'rsbuild:sass', getSassLoaderOptions = (userOptions, isUseCssSourceMap)=>{ let excludes = [], mergedOptions = (0, external_reduce_configs_namespaceObject.reduceConfigsWithContext)({ initial: { sourceMap: isUseCssSourceMap, api: 'modern-compiler', implementation: src_require.resolve('sass-embedded'), sassOptions: { quietDeps: !0 } }, config: userOptions, ctx: { addExcludes: (items)=>{ excludes.push(...Array.isArray(items) ? items : [ items ]); } }, mergeFn: (defaults, userOptions)=>({ ...defaults, ...userOptions, sassOptions: defaults.sassOptions && userOptions.sassOptions ? external_deepmerge_default()(defaults.sassOptions, userOptions.sassOptions) : userOptions.sassOptions || defaults.sassOptions }) }); return mergedOptions.sassOptions ||= {}, mergedOptions.sassOptions.silenceDeprecations || (mergedOptions.sassOptions.silenceDeprecations = [ 'import' ], 'legacy' === mergedOptions.api && mergedOptions.sassOptions.silenceDeprecations.push('legacy-js-api')), { options: mergedOptions, excludes }; }, findRuleId = (chain, defaultId)=>{ let id = defaultId, index = 0; for(; chain.module.rules.has(id);)id = `${defaultId}-${++index}`; return id; }, pluginSass = (pluginOptions = {})=>({ name: PLUGIN_SASS_NAME, setup (api) { let { rewriteUrls = !0, include = /\.s(?:a|c)ss$/ } = pluginOptions, SASS_INLINE = 'sass-inline', SASS_RAW = 'sass-raw', isV1 = api.context.version.startsWith('1.'); api.onAfterCreateCompiler(({ compiler })=>{ patchCompilerGlobalLocation(compiler); }), api.modifyBundlerChain((chain, { CHAIN_ID, environment })=>{ var callback; let { config } = environment, { sourceMap } = config.output, isUseSourceMap = 'boolean' == typeof sourceMap ? sourceMap : sourceMap.css, { excludes, options } = getSassLoaderOptions(pluginOptions.sassLoaderOptions, !!rewriteUrls || isUseSourceMap), sassRule = chain.module.rule(findRuleId(chain, CHAIN_ID.RULE.SASS)).test(include).dependency({ not: 'url' }).resolve.preferRelative(!0).end(); isV1 && (chain.module.rule(SASS_RAW).test(include), chain.module.rule(SASS_INLINE).test(include)); let getRule = (id)=>isV1 ? chain.module.rule(id) : (id.startsWith('sass') ? sassRule : chain.module.rule(CHAIN_ID.RULE.CSS)).oneOf(id), sassInlineRule = getRule(SASS_INLINE); getRule(SASS_RAW).type('asset/source').resourceQuery(getRule('css-raw').get('resourceQuery')); let sassMainRule = getRule('sass'), sassLoaderPath = external_node_path_default().join(src_dirname, '../compiled/sass-loader/index.js'), resolveUrlLoaderPath = external_node_path_default().join(src_dirname, '../compiled/resolve-url-loader/index.js'), resolveUrlLoaderOptions = { join: getResolveUrlJoinFn(), sourceMap: !1 }; (callback = (rule, cssBranchRule)=>{ for (let item of excludes)rule.exclude.add(item); for (let id of (pluginOptions.exclude && rule.exclude.add(pluginOptions.exclude), rule.sideEffects(!0).resourceQuery(cssBranchRule.get('resourceQuery')), Object.keys(cssBranchRule.uses.entries()))){ let loader = cssBranchRule.uses.get(id), options = loader.get('options') ?? {}, clonedOptions = external_deepmerge_default()({}, options); id === CHAIN_ID.USE.CSS && (clonedOptions.importLoaders += rewriteUrls ? 2 : 1), rule.use(id).loader(loader.get('loader')).options(clonedOptions); } rewriteUrls && rule.use(CHAIN_ID.USE.RESOLVE_URL).loader(resolveUrlLoaderPath).options(resolveUrlLoaderOptions).end(), rule.use(CHAIN_ID.USE.SASS).loader(sassLoaderPath).options(options); })(sassMainRule, getRule('css')), callback(sassInlineRule, getRule('css-inline')); }); } }); for(var __rspack_i in exports.PLUGIN_SASS_NAME = __webpack_exports__.PLUGIN_SASS_NAME, exports.pluginSass = __webpack_exports__.pluginSass, __webpack_exports__)-1 === [ "PLUGIN_SASS_NAME", "pluginSass" ].indexOf(__rspack_i) && (exports[__rspack_i] = __webpack_exports__[__rspack_i]); Object.defineProperty(exports, '__esModule', { value: !0 });