From bd90509968224e115d94970fb0e42ea59129f5f8 Mon Sep 17 00:00:00 2001 From: elycruz <603428+elycruz@users.noreply.github.com> Date: Thu, 21 Jul 2022 00:50:34 -0400 Subject: [PATCH] #98 - Updated plugins 'custom' sass file importer to enforce load order. - Updated 'SassImporterResult' type to match Sass's 'LegacyImporterResult' - We had defined our type because the version of sass the library using, and sass versions users might be using, did not/may not contain this type (so basically our type was that type but slightly imprecise (we had both 'file?:...', and 'content?:...' as part of the same interface, but actually they need to be separate ones (:-))). --- dist/index.js | 13 +++++++------ dist/index.js.map | 2 +- dist/types.d.ts | 9 +++++---- package-lock.json | 2 +- package.json | 2 +- src/index.ts | 28 +++++++++++++++++++--------- src/types.ts | 5 +---- 7 files changed, 35 insertions(+), 26 deletions(-) diff --git a/dist/index.js b/dist/index.js index 9f499da..093dd3b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -34,29 +34,30 @@ const pluginutils_1 = require("@rollup/pluginutils"); const style_1 = require("./style"); const utils_1 = require("./utils"); const MATCH_SASS_FILENAME_RE = /\.sass$/, MATCH_NODE_MODULE_RE = /^~([a-z0-9]|@).+/i, insertFnName = '___$insertStyle', getImporterList = (sassOptions) => { - const importer1 = (url, importer, done) => { + let lastResult = Promise.resolve(); + const importer1 = (url, prevUrl, done) => { if (!MATCH_NODE_MODULE_RE.test(url)) { return null; } const moduleUrl = url.slice(1); const resolveOptions = { - basedir: (0, path_1.dirname)(importer), + basedir: (0, path_1.dirname)(prevUrl), extensions: ['.scss', '.sass'], }; let file; try { file = resolve_1.default.sync(moduleUrl, resolveOptions); - done({ file }); + lastResult = lastResult.then(() => done({ file })); } catch (err) { (0, utils_1.warn)('[rollup-plugin-sass]: Recovered from error: ', err); if (sassOptions.importer && sassOptions.importer.length > 1) { - done(null); + lastResult = lastResult.then(() => done(null)); return; } - done({ + lastResult = lastResult.then(() => done({ file: url, - }); + })); } }; return [importer1].concat(sassOptions.importer || []); diff --git a/dist/index.js.map b/dist/index.js.map index c01917c..469c046 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types.d.ts b/dist/types.d.ts index 3d41aae..607b65b 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -16,10 +16,11 @@ export interface RollupPluginSassOptions { output?: boolean | string | RollupPluginSassOutputFn; runtime?: any; } -export declare type SassImporterResult = null | { - file?: string; - contents?: string; -} | Error; +export declare type SassImporterResult = { + file: string; +} | { + contents: string; +} | Error | null; export declare type SassDoneFn = (result: T) => void | T; export declare type SassImporter = (url: string, prev: string, done: SassDoneFn) => void | T; export interface SassFunctionsObject { diff --git a/package-lock.json b/package-lock.json index 1318fc2..84f4d9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rollup-plugin-sass", - "version": "1.2.12", + "version": "1.2.13", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2175e0c..6fe7160 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup-plugin-sass", - "version": "1.2.13", + "version": "1.2.13-alpha.1", "description": "Rollup Sass files.", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/src/index.ts b/src/index.ts index 252c078..22e179f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ import * as fs from 'fs'; import {createFilter} from '@rollup/pluginutils'; import {insertStyle} from './style'; import { + SassImporterResult, RollupAssetInfo, RollupChunkInfo, RollupPluginSassOptions, @@ -29,33 +30,42 @@ const MATCH_SASS_FILENAME_RE = /\.sass$/, * @see https://sass-lang.com/documentation/js-api#importer */ getImporterList = (sassOptions: SassOptions) => { - const importer1 = (url, importer, done) => { + // `Promise` to chain all `importer1` calls to; E.g., subsequent `importer1` calls won't call `done` until previous `importer1` calls have called `done` (import order enforcement) - Required since importer below is actually 'async'. + let lastResult = Promise.resolve(); + + /** + * Legacy Sass (*.scss/*.sass) file importer (works in new, and older, versions of `sass` module). + * @see https://sass-lang.com/documentation/js-api/modules#LegacyAsyncImporter + * @param {string} url - Url found in `@import`/`@use`, found in parent sass file, exactly as it appears in sass file. + * @param {string} prevUrl - Url of file that contains '@import' rule for `url`. + * @param {(result: LegacyImporterResult | SassImporterResult) => void} done - Signals import completion. Note: `LegacyImporterResult`, and `SassImporterResult`, are the same here - We've defined the type for out plugin, since older versions of sass don't have the type defined amongst their types. + * @returns {void} + */ + const importer1 = (url: string, prevUrl: string, done: (rslt: SassImporterResult) => void): void => { if (!MATCH_NODE_MODULE_RE.test(url)) { return null; } const moduleUrl = url.slice(1); const resolveOptions = { - basedir: dirname(importer), + basedir: dirname(prevUrl), extensions: ['.scss', '.sass'], }; - let file: string; - try { - file = resolve.sync(moduleUrl, resolveOptions); - done({file}); + const file = resolve.sync(moduleUrl, resolveOptions); + lastResult = lastResult.then(() => done({file})); } catch (err) { warn('[rollup-plugin-sass]: Recovered from error: ', err); // If importer has sibling importers then exit and allow one of the other // importers to attempt file path resolution. if (sassOptions.importer && sassOptions.importer.length > 1) { - done(null); + lastResult = lastResult.then(() => done(null)); return; } - done({ + lastResult = lastResult.then(() => done({ file: url, - }); + })); } } return [importer1].concat(sassOptions.importer || []) diff --git a/src/types.ts b/src/types.ts index 62dc6ad..b3d852e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -53,10 +53,7 @@ export interface RollupPluginSassOptions { runtime?: any, } -export type SassImporterResult = null | { - file?: string, - contents?: string -} | Error; +export type SassImporterResult = { file: string } | { contents: string } | Error | null; export type SassDoneFn = (result: T) => void | T;