@yarn-tool/yarnlock-types
Version:
115 lines (114 loc) • 3.77 kB
TypeScript
import { IDependency } from '@ts-type/package-dts/lib/package-json/types';
import { ITSTypeAndStringLiteral } from 'ts-type/lib/helper/string';
export type IYarnLockParsed = IYarnLockParsedV1 | IYarnLockParsedV2;
/**
* use for avoid typescript show error
*/
export interface IYarnLockParsedLoose<D extends IYarnLockDataRowBase = IYarnLockDataRowBase, K extends string = string> {
verType: EnumDetectYarnLock;
meta?: Record<string, any>;
data: IYarnLockDataRecord<D, K>;
}
export interface IYarnLockDataRowBase {
version: string;
/**
* 依賴列表
*/
dependencies?: IDependency;
}
export interface IYarnLockDataRowV1 extends IYarnLockDataRowBase {
/**
* 安裝來源網址
*/
resolved?: string;
/**
* hash key
*/
integrity?: string;
}
export interface IYarnLockDataRowV2 extends IYarnLockDataRowBase {
resolution: string;
checksum?: string;
languageName?: string | ITSTypeAndStringLiteral<EnumLanguageName>;
linkType?: string | ITSTypeAndStringLiteral<EnumLinkType>;
}
export type IYarnLockDataRecord<D extends IYarnLockDataRowBase = IYarnLockDataRowBase, K extends string = string> = Record<K, D>;
export declare enum EnumDetectYarnLock {
v1 = 1,
v2 = 2,
/**
* @deprecated do not use this if u want check is version is berry
* @type {EnumDetectYarnLock.berry}
*/
berry = 2,
v3 = 3,
/**
* @deprecated do not use this if u want check is version is berry
* @alias {EnumDetectYarnLock.v3}
*/
canary = 3,
unknown = 0
}
export declare const enum EnumDetectYarnLockInputType {
unknown = 0,
simple = 1,
parse_raw = 2
}
export type IEnumDetectYarnLockValues = typeof EnumDetectYarnLock[keyof typeof EnumDetectYarnLock];
export type IValidYarnLockVersion = Exclude<IEnumDetectYarnLockValues, EnumDetectYarnLock.unknown>;
export type IYarnLockVersionSyml = Exclude<IValidYarnLockVersion, EnumDetectYarnLock.v1>;
export type IYarnLockMetaVersion = `${number}`;
export interface IYarnLockParsedV1<D extends IYarnLockDataRecord<IYarnLockDataRowBase> = IYarnLockDataRecord<IYarnLockDataRowV1>> {
verType: EnumDetectYarnLock.v1;
meta?: {
type?: string | 'success' | 'merge' | 'conflict';
version?: never;
};
data: D;
}
export interface IYarnLockParsedV2<D extends IYarnLockDataRecord<IYarnLockDataRowBase> = IYarnLockDataRecord<IYarnLockDataRowV2>> {
verType: IYarnLockVersionSyml;
meta?: {
type?: never;
version?: string;
cacheKey?: string;
};
data: D;
}
export type IUnpackYarnLockDataRow<T extends IYarnLockParsedV1 | IYarnLockParsedV2> = T extends {
data: IYarnLockDataRecord<infer D>;
} ? D extends IYarnLockDataRowV2 ? D : D extends IYarnLockDataRowV1 ? D : D extends IYarnLockDataRowBase ? D : never : never;
export declare const enum EnumYarnLockSourceV1Type {
'success' = "success",
'merge' = "merge",
'conflict' = "conflict"
}
/**
* yarn.lock v1
* @see @yarnpkg/lockfile
*/
export interface IYarnLockRawSourceV1 {
type?: ITSTypeAndStringLiteral<EnumYarnLockSourceV1Type>;
object: IYarnLockDataRecord<IYarnLockDataRowV1>;
}
export type IYarnLockRawSourceV1Full = Required<IYarnLockRawSourceV1>;
/**
* yarn.lock v2
* @see @yarnpkg/parsers
*/
export type IYarnLockRawSourceV2 = {
__metadata?: {
version?: string;
cacheKey?: string;
};
} & IYarnLockDataRecord<IYarnLockDataRowV2>;
export type IYarnLockSource = IYarnLockRawSourceV1 | IYarnLockRawSourceV2;
export type IYarnLockRawSourceV2Full = Required<IYarnLockRawSourceV2>;
export declare enum EnumLinkType {
'hard' = "hard",
'soft' = "soft"
}
export declare enum EnumLanguageName {
'node' = "node",
'unknown' = "unknown"
}