| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- //#region src/composable-filters.d.ts
- type StringOrRegExp = string | RegExp;
- type PluginModuleType = "js" | "jsx" | "ts" | "tsx" | "json" | "text" | "base64" | "dataurl" | "binary" | "empty" | (string & {});
- type FilterExpressionKind = FilterExpression["kind"];
- type FilterExpression = And | Or | Not | Id | ModuleType | Code | Query;
- type TopLevelFilterExpression = Include | Exclude;
- declare class And {
- kind: "and";
- args: FilterExpression[];
- constructor(...args: FilterExpression[]);
- }
- declare class Or {
- kind: "or";
- args: FilterExpression[];
- constructor(...args: FilterExpression[]);
- }
- declare class Not {
- kind: "not";
- expr: FilterExpression;
- constructor(expr: FilterExpression);
- }
- interface QueryFilterObject {
- [key: string]: StringOrRegExp | boolean;
- }
- interface IdParams {
- cleanUrl?: boolean;
- }
- declare class Id {
- kind: "id";
- pattern: StringOrRegExp;
- params: IdParams;
- constructor(pattern: StringOrRegExp, params?: IdParams);
- }
- declare class ModuleType {
- kind: "moduleType";
- pattern: PluginModuleType;
- constructor(pattern: PluginModuleType);
- }
- declare class Code {
- kind: "code";
- pattern: StringOrRegExp;
- constructor(expr: StringOrRegExp);
- }
- declare class Query {
- kind: "query";
- key: string;
- pattern: StringOrRegExp | boolean;
- constructor(key: string, pattern: StringOrRegExp | boolean);
- }
- declare class Include {
- kind: "include";
- expr: FilterExpression;
- constructor(expr: FilterExpression);
- }
- declare class Exclude {
- kind: "exclude";
- expr: FilterExpression;
- constructor(expr: FilterExpression);
- }
- declare function and(...args: FilterExpression[]): And;
- declare function or(...args: FilterExpression[]): Or;
- declare function not(expr: FilterExpression): Not;
- declare function id(pattern: StringOrRegExp, params?: IdParams): Id;
- declare function moduleType(pattern: PluginModuleType): ModuleType;
- declare function code(pattern: StringOrRegExp): Code;
- declare function query(key: string, pattern: StringOrRegExp | boolean): Query;
- declare function include(expr: FilterExpression): Include;
- declare function exclude(expr: FilterExpression): Exclude;
- /**
- * convert a queryObject to FilterExpression like
- * ```js
- * and(query(k1, v1), query(k2, v2))
- * ```
- * @param queryFilterObject The query filter object needs to be matched.
- * @returns a `And` FilterExpression
- */
- declare function queries(queryFilter: QueryFilterObject): And;
- declare function interpreter(exprs: TopLevelFilterExpression | TopLevelFilterExpression[], code?: string, id?: string, moduleType?: PluginModuleType): boolean;
- interface InterpreterCtx {
- urlSearchParamsCache?: URLSearchParams;
- }
- declare function interpreterImpl(expr: TopLevelFilterExpression[], code?: string, id?: string, moduleType?: PluginModuleType, ctx?: InterpreterCtx): boolean;
- declare function exprInterpreter(expr: FilterExpression, code?: string, id?: string, moduleType?: PluginModuleType, ctx?: InterpreterCtx): boolean;
- //#endregion
- //#region src/simple-filters.d.ts
- /**
- * Constructs a RegExp that matches the exact string specified.
- *
- * This is useful for plugin hook filters.
- *
- * @param str the string to match.
- * @param flags flags for the RegExp.
- *
- * @example
- * ```ts
- * import { exactRegex } from '@rolldown/pluginutils';
- * const plugin = {
- * name: 'plugin',
- * resolveId: {
- * filter: { id: exactRegex('foo') },
- * handler(id) {} // will only be called for `foo`
- * }
- * }
- * ```
- */
- declare function exactRegex(str: string, flags?: string): RegExp;
- /**
- * Constructs a RegExp that matches a value that has the specified prefix.
- *
- * This is useful for plugin hook filters.
- *
- * @param str the string to match.
- * @param flags flags for the RegExp.
- *
- * @example
- * ```ts
- * import { prefixRegex } from '@rolldown/pluginutils';
- * const plugin = {
- * name: 'plugin',
- * resolveId: {
- * filter: { id: prefixRegex('foo') },
- * handler(id) {} // will only be called for IDs starting with `foo`
- * }
- * }
- * ```
- */
- declare function prefixRegex(str: string, flags?: string): RegExp;
- type WidenString<T> = T extends string ? string : T;
- /**
- * Converts a id filter to match with an id with a query.
- *
- * @param input the id filters to convert.
- *
- * @example
- * ```ts
- * import { makeIdFiltersToMatchWithQuery } from '@rolldown/pluginutils';
- * const plugin = {
- * name: 'plugin',
- * transform: {
- * filter: { id: makeIdFiltersToMatchWithQuery(['**' + '/*.js', /\.ts$/]) },
- * // The handler will be called for IDs like:
- * // - foo.js
- * // - foo.js?foo
- * // - foo.txt?foo.js
- * // - foo.ts
- * // - foo.ts?foo
- * // - foo.txt?foo.ts
- * handler(code, id) {}
- * }
- * }
- * ```
- */
- declare function makeIdFiltersToMatchWithQuery<T extends string | RegExp>(input: T): WidenString<T>;
- declare function makeIdFiltersToMatchWithQuery<T extends string | RegExp>(input: readonly T[]): WidenString<T>[];
- declare function makeIdFiltersToMatchWithQuery(input: string | RegExp | readonly (string | RegExp)[]): string | RegExp | (string | RegExp)[];
- //#endregion
- export { FilterExpression, FilterExpressionKind, QueryFilterObject, TopLevelFilterExpression, and, code, exactRegex, exclude, exprInterpreter, id, include, interpreter, interpreterImpl, makeIdFiltersToMatchWithQuery, moduleType, not, or, prefixRegex, queries, query };
|