@-xun/common-dummies
Version:
A collection of dummy projects, packages, and other testable structures
38 lines • 1.6 kB
TypeScript
import type { AbsolutePath } from '@-xun/fs';
import type { XPackageJson } from '@-xun/project-types';
import type { Merge } from 'type-fest';
/**
* A type representing the name of an available dummy package.
*/
export type PackageName = 'root' | 'simple' | 'complex' | 'sugared' | 'unlimited' | 'defaults';
/**
* Represents the dummy package metadata returned by the `getDummyPackage`
* function.
*/
export type DummyPackageMetadata<RequireObjectImports extends boolean = false, RequireObjectExports extends boolean = false> = {
path: AbsolutePath;
name: string;
packageJson: Merge<XPackageJson, {
imports: RequireObjectImports extends true ? Exclude<XPackageJson['imports'], string | undefined | null | unknown[]> : XPackageJson['imports'] | undefined;
exports: RequireObjectExports extends true ? Exclude<XPackageJson['exports'], string | undefined | null | unknown[]> : XPackageJson['exports'] | undefined;
}>;
};
/**
* Return metadata about an available dummy package.
*/
export declare function getDummyPackage<RequireObjectImports extends boolean = false, RequireObjectExports extends boolean = false>(id: PackageName, options?: {
/**
* If `true`, `imports` must be an object and not `undefined`, `null`,
* `string`, or an array.
*
* @default false
*/
requireObjectImports?: RequireObjectImports;
/**
* If `true`, `exports` must be an object and not `undefined`, `null`,
* `string`, or an array.
*
* @default false
*/
requireObjectExports?: RequireObjectExports;
}): DummyPackageMetadata<RequireObjectImports, RequireObjectExports>;