weapp-tailwindcss
Version:
把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!
107 lines (106 loc) • 5.73 kB
TypeScript
import type { ParseError, ParserOptions } from '@babel/parser';
import type { CssPreflightOptions, Document, IStyleHandlerOptions, Result as PostcssResult, Root } from '@weapp-tailwindcss/postcss';
import type { SourceMap } from 'magic-string';
import type { ICreateCacheReturnType } from '../cache/index.js';
import type { ItemOrItemArray } from './base.js';
import type { AppType, IArbitraryValues, ICustomAttributesEntities } from './shared.js';
import type { UniAppXComponentLocalStylesOptions, UniAppXOptions as UniAppXUserDefinedOptions, UserDefinedOptions } from './user-defined-options/index.js';
import type { LengthUnitsRuntimeOptions, TailwindContentTokenReport, TailwindcssExtractOptions, TailwindcssExtractResult, TailwindCssOptions, TailwindCssRuntimeOptions, TailwindPackageInfo } from '../tailwindcss/runtime-types.js';
export type { TailwindCssOptions, TailwindCssRuntimeOptions, UniAppXComponentLocalStylesOptions, UniAppXUserDefinedOptions, UserDefinedOptions, };
export type { AppType, IArbitraryValues, ICustomAttributes, ICustomAttributesEntities, IUnocssCompatibilityOptions } from './shared.js';
export type { CssPreflightOptions, IStyleHandlerOptions, ItemOrItemArray };
export type { WeappTailwindcssStyleInjectorOptions } from '../style-injector/internal.js';
export type RequiredDefined<T> = {
[K in keyof T]-?: Exclude<T[K], undefined>;
};
type InternalUserDefinedOptionsBase = RequiredDefined<Omit<UserDefinedOptions, 'supportCustomLengthUnits' | 'customReplaceDictionary' | 'cache' | 'templateHandler' | 'styleHandler' | 'jsHandler'>>;
export interface LinkedJsModuleResult {
code: string;
}
export interface JsHandlerResult {
code: string;
map?: SourceMap;
error?: ParseError;
linked?: Record<string, LinkedJsModuleResult>;
}
export interface TailwindcssRuntimeLike {
packageInfo: TailwindPackageInfo;
majorVersion?: number | undefined;
getClassSet: () => Promise<Set<string>> | Set<string>;
getClassSetSync?: (() => Set<string>) | undefined;
extract: (options?: TailwindcssExtractOptions) => Promise<TailwindcssExtractResult> | TailwindcssExtractResult;
collectContentTokens?: (() => Promise<TailwindContentTokenReport> | TailwindContentTokenReport) | undefined;
options?: TailwindCssRuntimeOptions | undefined;
}
export type BabelParserOptions = ParserOptions & {
cache?: boolean | undefined;
cacheKey?: string | undefined;
cacheMaxEntries?: number | undefined;
cacheMaxSourceLength?: number | undefined;
};
export interface RefreshTailwindcssRuntimeOptions {
clearCache?: boolean | undefined;
}
export interface IJsHandlerOptions {
escapeMap?: Record<string, string> | undefined;
classNameSet?: Set<string> | undefined;
jsArbitraryValueFallback?: boolean | 'auto' | undefined;
tailwindcssMajorVersion?: number | undefined;
arbitraryValues?: IArbitraryValues | undefined;
jsPreserveClass?: ((keyword: string) => boolean | undefined) | undefined;
needEscaped?: boolean | undefined;
generateMap?: boolean | undefined;
alwaysEscape?: boolean | undefined;
unescapeUnicode?: boolean | undefined;
babelParserOptions?: BabelParserOptions | undefined;
experimentalJsFastPath?: boolean | 'oxc' | undefined;
ignoreTaggedTemplateExpressionIdentifiers?: (string | RegExp)[] | undefined;
ignoreCallExpressionIdentifiers?: (string | RegExp)[] | undefined;
uniAppX?: boolean | undefined;
moduleSpecifierReplacements?: Record<string, string> | undefined;
wrapExpression?: boolean | undefined;
filename?: string | undefined;
moduleGraph?: JsModuleGraphOptions | undefined;
}
export interface JsHandler {
(rawSource: string, set?: Set<string>, options?: CreateJsHandlerOptions): JsHandlerResult;
}
export interface ICommonReplaceOptions {
keepEOL?: boolean | undefined;
escapeMap?: Record<string, string> | undefined;
}
export interface ITemplateHandlerOptions extends ICommonReplaceOptions {
customAttributesEntities?: ICustomAttributesEntities | undefined;
escapeMap?: Record<string, string> | undefined;
inlineWxs?: boolean | undefined;
jsHandler?: JsHandler | undefined;
runtimeSet?: Set<string> | undefined;
disabledDefaultTemplateHandler?: boolean | undefined;
quote?: string | null | undefined;
ignoreHead?: boolean | undefined;
wrapExpression?: boolean | undefined;
}
export interface InternalUserDefinedOptions extends InternalUserDefinedOptionsBase {
supportCustomLengthUnits: LengthUnitsRuntimeOptions | boolean;
templateHandler: (rawSource: string, options?: ITemplateHandlerOptions) => Promise<string>;
styleHandler: (rawSource: string, options?: IStyleHandlerOptions) => Promise<PostcssResult<Root | Document>>;
jsHandler: JsHandler;
escapeMap: Record<string, string>;
customReplaceDictionary: Record<string, string>;
cache: ICreateCacheReturnType;
tailwindRuntime: TailwindcssRuntimeLike;
refreshTailwindcssRuntime: (options?: RefreshTailwindcssRuntimeOptions) => Promise<TailwindcssRuntimeLike>;
}
export type InternalPostcssOptions = Pick<UserDefinedOptions, 'cssMatcher' | 'mainCssChunkMatcher' | 'cssPreflight' | 'cssPreflightRange' | 'disabled'>;
export interface IBaseWebpackPlugin {
options: InternalUserDefinedOptions;
appType?: AppType | undefined;
apply: (compiler: any) => void;
}
export type CreateJsHandlerOptions = Omit<IJsHandlerOptions, 'classNameSet'>;
export interface JsModuleGraphOptions {
resolve: (specifier: string, importer: string) => string | undefined;
load: (id: string) => string | undefined;
filter?: ((id: string, specifier: string, importer: string) => boolean) | undefined;
maxDepth?: number | undefined;
}