import type { ResolveHookContext } from 'node:module'; export declare const arrayEquals: (a: any[], b: any[]) => boolean; export declare const ensureOptionalAbsoluteWithCwd: (pathExp: string | undefined) => string; export declare const ensureOptionalAbsolute: (pathExp: string | undefined, basePathExp: string) => string; export declare const assertPathAbsolute: (pathExpression: string) => void; export declare const assertOptionalPathAbsolute: (pathExpression: string | undefined, message?: string) => void; export declare const pickFirstPathExisting: (paths: string[]) => Promise; export declare const isSpecifierFromPackage: (specifier: string, packageName: string) => boolean; export interface ImportEvent { specifier: string; context: ResolveHookContext; } export type ObjPolicyFilter<$Object extends object, $Key extends Keyof<$Object>, Mode extends `allow` | `deny`> = Mode extends `allow` ? Pick<$Object, Extract<$Key, keyof $Object>> : Omit<$Object, Extract<$Key, keyof $Object>>; /** * Like keyof but returns PropertyKey for object */ type Keyof<$Object extends object> = object extends $Object ? PropertyKey : (keyof $Object); /** * Filter object properties based on a policy mode and set of keys * * @param mode - 'allow' to keep only specified keys, 'deny' to remove specified keys * @param obj - The object to filter * @param keys - The keys to process * @returns A filtered object with proper type inference * * @example * ```ts * const obj = { a: 1, b: 2, c: 3 } * * // Allow mode: keep only 'a' and 'c' * objPolicyFilter('allow', obj, ['a', 'c']) // { a: 1, c: 3 } * * // Deny mode: remove 'a' and 'c' * objPolicyFilter('deny', obj, ['a', 'c']) // { b: 2 } * ``` */ export declare const objPolicyFilter: , mode extends `allow` | `deny`>(mode: mode, obj: obj, keys: readonly keyUnion[]) => ObjPolicyFilter; /** * Filter an object using a predicate function * * @param obj - The object to filter * @param predicate - Function that returns true to keep a key/value pair * @returns A new object with only the key/value pairs where predicate returned true * * @example * ```ts * const obj = { a: 1, b: 2, c: 3 } * objFilter(obj, (k, v) => v > 1) // { b: 2, c: 3 } * objFilter(obj, k => k !== 'b') // { a: 1, c: 3 } * ``` */ export declare const objFilter: (obj: T, predicate: (key: keyof T, value: T[keyof T], obj: T) => boolean) => Partial; export declare const ObjPick: (obj: T, keys: readonly K[]) => Pick; export declare const ObjOmit: (obj: T, keys: readonly K[]) => Omit; export declare const ObjPartition: (obj: T, keys: readonly K[]) => { omitted: Omit; picked: Pick; }; export declare const ensureEnd: (string: string, ending: string) => string; export declare const ResponseInternalServerError: () => Response; /** * Execute an operation on multiple items, continuing even if some fail */ export declare function tryCatchMany(items: item[], operation: (item: item) => Promise): Promise<[result[], (Error & { context: { item: item; }; })[]]>; /** * Type-level helper to check if two types are exactly the same (invariant). */ export type IsExact = T extends U ? U extends T ? true : false : false; export type ExtendsExact<$Input, $Constraint> = $Input extends $Constraint ? $Constraint extends $Input ? $Input : never : never; /** * Split an array into chunks of specified size * * @param array - The array to chunk * @param size - The size of each chunk * @returns Array of chunks * * @example * ```ts * chunk([1, 2, 3, 4, 5], 2) // [[1, 2], [3, 4], [5]] * chunk(['a', 'b', 'c'], 3) // [['a', 'b', 'c']] * ``` */ export declare const chunk: (array: readonly T[], size: number) => T[][]; export interface AsyncParallelOptions { /** * Maximum number of items to process concurrently * @default 10 */ concurrency?: number; /** * If true, stops processing on first error * If false, continues processing all items even if some fail * @default false */ failFast?: boolean; /** * Size of batches to process items in * If not specified, all items are processed with the specified concurrency */ batchSize?: number; } export interface AsyncParallelResult { /** Successfully processed results */ results: R[]; /** Errors that occurred during processing */ errors: (Error & { item: T; })[]; /** Whether all items were processed successfully */ success: boolean; } /** * Process items in parallel with configurable options * * @param items - Items to process * @param operation - Async function to apply to each item (with optional index) * @param options - Configuration options * @returns Results and errors from processing * * @example * ```ts * const items = [1, 2, 3, 4, 5] * const result = await asyncParallel(items, async (n, index) => n * 2, { * concurrency: 2, * batchSize: 3, * failFast: false * }) * // result.results: [2, 4, 6, 8, 10] * // result.errors: [] * // result.success: true * ``` */ export declare const asyncParallel: (items: readonly T[], operation: (item: T, index: number) => Promise, options?: AsyncParallelOptions) => Promise>; /** * Reduce an array asynchronously with context, processing each item in sequence * * @param items - Array of items to process * @param reducer - Async function that takes accumulator, current item, and context * @param initial - Initial value for the accumulator * @param context - Context object passed to each reducer call * @returns Final accumulated value * * @example * ```ts * const transformers = [transformer1, transformer2] * const ctx = { request: req, response: res } * const result = await asyncReduceWithContext( * transformers, * async (html, transformer) => transformer(html, ctx), * initialHtml, * ctx * ) * ``` */ export declare const asyncReduce: (items: readonly T[], reducer: (accumulator: R, current: T, context: C, index: number) => Promise | R, initial: R, context: C) => Promise; /** * Curried version of asyncReduceWithContext for functions that transform a value with context * * @param transformers - Array of transformer functions that take value and context * @returns A function that takes an initial value and context, and applies all transformers * * @example * ```ts * const transformers = [ * (html, ctx) => html.replace('{{url}}', ctx.req.url), * async (html, ctx) => await ctx.minify(html), * ] * const applyTransforms = asyncReduceWithContextWith(transformers) * const finalHtml = await applyTransforms(initialHtml, ctx) * ``` */ export declare const asyncReduceWith: (transformers: readonly ((value: T, context: C) => Promise | T)[], context: C) => (initial: T) => Promise; /** * Create a branded type that provides nominal typing in TypeScript. * * Branded types allow you to create distinct types from primitives or other types, * preventing accidental mixing of values that are structurally identical but * semantically different. * * @template $BaseType - The underlying type to brand (e.g., string, number) * @template $BrandName - A unique string literal to distinguish this brand * * @example * ```ts * // Create distinct ID types that can't be mixed * type UserId = Brand * type PostId = Brand * * function getUser(id: UserId) { ... } * * const userId = 'u123' as UserId * const postId = 'p456' as PostId * * getUser(userId) // ✓ OK * getUser(postId) // ✗ Type error - can't use PostId where UserId expected * ``` * * @example * ```ts * // Brand primitive types for domain modeling * type Email = Brand * type Url = Brand * type PositiveNumber = Brand * ``` */ export type Brand<$BaseType, $BrandName extends string> = $BaseType & { readonly __brand: $BrandName; }; /** * Helper function to create a branded value. * * This is a simple type assertion helper. For runtime validation, * combine with validation functions or schemas. * * @template $BaseType - The underlying type to brand * @template $BrandName - The brand name to apply * @param value - The value to brand * @returns The value with the brand type applied * * @example * ```ts * type UserId = Brand * * // Simple branding (no runtime validation) * const id = brand('u123') * * // With validation (recommended) * function createUserId(value: string): UserId { * if (!value.startsWith('u')) { * throw new Error('User IDs must start with "u"') * } * return brand(value) * } * ``` */ export declare const brand: <$BaseType, $BrandName extends string>(value: $BaseType) => Brand<$BaseType, $BrandName>; /** * Shallow merge objects while omitting undefined values. * * This utility simplifies the common pattern of conditionally spreading objects * to avoid including undefined values that would override existing values. * * @param objects - Objects to merge (later objects override earlier ones). Undefined objects are ignored. * @returns Merged object with undefined values omitted * * @example * ```ts * // Instead of: * const overrides = { * ...(value1 ? { key1: value1 } : {}), * ...(value2 ? { key2: value2 } : {}), * } * * // Use: * const overrides = mergeShallow({ * key1: value1, * key2: value2, * }) * * // Example with config merging: * const config = mergeShallow( * defaultConfig, * userConfig, * { debug: args.debug, base: args.base } * ) * // undefined values in the last object won't override earlier values * ``` */ export declare const spreadShallow: (...objects: (T | undefined)[]) => T; export {}; //# sourceMappingURL=kit-temp.d.ts.map