| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- import {LegacyPluginThis} from './plugin_this';
- /**
- * The value of `this` in the context of a {@link LegacyImporter} function.
- *
- * @category Legacy
- * @deprecated This is only used by the legacy {@link render} and {@link
- * renderSync} APIs. Use {@link Importer} with {@link compile}, {@link
- * compileString}, {@link compileAsync}, and {@link compileStringAsync} instead.
- */
- interface LegacyImporterThis extends LegacyPluginThis {
- /**
- * Whether the importer is being invoked because of a Sass `@import` rule, as
- * opposed to a `@use` or `@forward` rule.
- *
- * This should *only* be used for determining whether or not to load
- * [import-only files](https://sass-lang.com/documentation/at-rules/import#import-only-files).
- *
- * @compatibility dart: "1.33.0", node: false
- */
- fromImport: boolean;
- }
- /**
- * The result of running a {@link LegacyImporter}. It must be one of the
- * following types:
- *
- * * An object with the key `contents` whose value is the contents of a stylesheet
- * (in SCSS syntax). This causes Sass to load that stylesheet’s contents.
- *
- * * An object with the key `file` whose value is a path on disk. This causes Sass
- * to load that file as though it had been imported directly.
- *
- * * `null`, which indicates that it doesn’t recognize the URL and another
- * importer should be tried instead.
- *
- * * An [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)
- * object, indicating that importing failed.
- *
- * @category Legacy
- * @deprecated This only works with the legacy {@link render} and {@link
- * renderSync} APIs. Use {@link ImporterResult} with {@link compile}, {@link
- * compileString}, {@link compileAsync}, and {@link compileStringAsync} instead.
- */
- export type LegacyImporterResult =
- | {file: string}
- | {contents: string}
- | Error
- | null;
- /**
- * A synchronous callback that implements custom Sass loading logic for
- * [`@import` rules](https://sass-lang.com/documentation/at-rules/import) and
- * [`@use` rules](https://sass-lang.com/documentation/at-rules/use). This can be
- * passed to {@link LegacySharedOptions.importer} for either {@link render} or
- * {@link renderSync}.
- *
- * See {@link LegacySharedOptions.importer} for more detailed documentation.
- *
- * ```js
- * sass.renderSync({
- * file: "style.scss",
- * importer: [
- * function(url, prev) {
- * if (url != "big-headers") return null;
- *
- * return {
- * contents: 'h1 { font-size: 40px; }'
- * };
- * }
- * ]
- * });
- * ```
- *
- * @param url - The `@use` or `@import` rule’s URL as a string, exactly as it
- * appears in the stylesheet.
- *
- * @param prev - A string identifying the stylesheet that contained the `@use`
- * or `@import`. This string’s format depends on how that stylesheet was loaded:
- *
- * * If the stylesheet was loaded from the filesystem, it’s the absolute path of
- * its file.
- * * If the stylesheet was loaded from an importer that returned its contents,
- * it’s the URL of the `@use` or `@import` rule that loaded it.
- * * If the stylesheet came from the data option, it’s the string "stdin".
- *
- * @category Legacy
- * @deprecated This only works with the legacy {@link render} and {@link
- * renderSync} APIs. Use {@link Importer} with {@link compile}, {@link
- * compileString}, {@link compileAsync}, and {@link compileStringAsync} instead.
- */
- type LegacySyncImporter = (
- this: LegacyImporterThis,
- url: string,
- prev: string
- ) => LegacyImporterResult;
- /**
- * An asynchronous callback that implements custom Sass loading logic for
- * [`@import` rules](https://sass-lang.com/documentation/at-rules/import) and
- * [`@use` rules](https://sass-lang.com/documentation/at-rules/use). This can be
- * passed to {@link LegacySharedOptions.importer} for either {@link render} or
- * {@link renderSync}.
- *
- * An asynchronous importer must return `undefined`, and then call `done` with
- * the result of its {@link LegacyImporterResult} once it's done running.
- *
- * See {@link LegacySharedOptions.importer} for more detailed documentation.
- *
- * ```js
- * sass.render({
- * file: "style.scss",
- * importer: [
- * function(url, prev, done) {
- * if (url != "big-headers") done(null);
- *
- * done({
- * contents: 'h1 { font-size: 40px; }'
- * });
- * }
- * ]
- * });
- * ```
- *
- * @param url - The `@use` or `@import` rule’s URL as a string, exactly as it
- * appears in the stylesheet.
- *
- * @param prev - A string identifying the stylesheet that contained the `@use`
- * or `@import`. This string’s format depends on how that stylesheet was loaded:
- *
- * * If the stylesheet was loaded from the filesystem, it’s the absolute path of
- * its file.
- * * If the stylesheet was loaded from an importer that returned its contents,
- * it’s the URL of the `@use` or `@import` rule that loaded it.
- * * If the stylesheet came from the data option, it’s the string "stdin".
- *
- * @param done - The callback to call once the importer has finished running.
- *
- * @category Legacy
- * @deprecated This only works with the legacy {@link render} and {@link
- * renderSync} APIs. Use {@link Importer} with {@link compile}, {@link
- * compileString}, {@link compileAsync}, and {@link compileStringAsync} instead.
- */
- type LegacyAsyncImporter = (
- this: LegacyImporterThis,
- url: string,
- prev: string,
- done: (result: LegacyImporterResult) => void
- ) => void;
- /**
- * A callback that implements custom Sass loading logic for [`@import`
- * rules](https://sass-lang.com/documentation/at-rules/import) and [`@use`
- * rules](https://sass-lang.com/documentation/at-rules/use). For {@link
- * renderSync}, this must be a {@link LegacySyncImporter} which returns its
- * result directly; for {@link render}, it may be either a {@link
- * LegacySyncImporter} or a {@link LegacyAsyncImporter} which calls a callback
- * with its result.
- *
- * See {@link LegacySharedOptions.importer} for more details.
- *
- * @category Legacy
- * @deprecated This only works with the legacy {@link render} and {@link
- * renderSync} APIs. Use {@link Importer} with {@link compile}, {@link
- * compileString}, {@link compileAsync}, and {@link compileStringAsync} instead.
- */
- export type LegacyImporter<sync = 'sync' | 'async'> = sync extends 'async'
- ? LegacySyncImporter | LegacyAsyncImporter
- : LegacySyncImporter;
|